0

テーブル内の最新のレコードを取得する必要があります。このために、最初にすべてのレコードを選択してから並べ替え、最新の 100 レコードを取得します。それはたくさんの費用がかかります。これはより良い方法でしょうか?

私はオラクル10gを使用しています。

4

2 に答える 2

0

これはすべて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);

次に、クエリはこのインデックスを使用して最新のレコードのみを取得する必要があります。そうでない場合は、このテーブルの統計を再収集する必要があるかもしれません。

于 2012-10-22T09:06:05.650 に答える
0

これらの 100 件のレコードが常に基準を満たすことがわかっている場合は、条件を追加してみてください。たとえば、load_date > '01-Jan-2012' などです。

于 2012-10-22T08:58:09.187 に答える