テーブル内の最新のレコードを取得する必要があります。このために、最初にすべてのレコードを選択してから並べ替え、最新の 100 レコードを取得します。それはたくさんの費用がかかります。これはより良い方法でしょうか?
私はオラクル10gを使用しています。
テーブル内の最新のレコードを取得する必要があります。このために、最初にすべてのレコードを選択してから並べ替え、最新の 100 レコードを取得します。それはたくさんの費用がかかります。これはより良い方法でしょうか?
私はオラクル10gを使用しています。
これはすべてSQLで行っていると思いますか?
SELECT * FROM (
SELECT *
FROM table
ORDER BY modified_date DESC
)
WHERE rownum <= 100;
できることの1つは、「modified_date」に降順のインデックスを作成することです。
CREATE INDEX table_modified_date_desc_idx on table(modified_date DESC);
次に、クエリはこのインデックスを使用して最新のレコードのみを取得する必要があります。そうでない場合は、このテーブルの統計を再収集する必要があるかもしれません。
これらの 100 件のレコードが常に基準を満たすことがわかっている場合は、条件を追加してみてください。たとえば、load_date > '01-Jan-2012' などです。