sql >> データベース >  >> RDS >> Oracle

Oracleとページネーション

    クエリは最初の90Mをカウントオフする必要があります 次の100を取得するためのレコード 、したがって、改善の余地はほとんどありません。

    ORDER BYが表示されません サブクエリの句ですが、おそらくそれがあります。この場合、インデックスを作成することをお勧めします。

    そして質問:ユーザーは本当に900Kをクリックしますか パフォーマンスについて文句を言う前のページ?

    更新:

    最新のページが必要な場合は、ORDER BYを書き直す必要があります 降順の列:

    SELECT  *
    FROM    (
            SELECT  rownum rnum, f.*
            FROM    findings f
            ORDER BY
                    record_ordering_column DESC
            ) 
    WHERE   rnum > 900
            AND rownum <= 100
    

    record_ordering_columnにインデックスを作成します

    rownumを混在させていることに注意してください は、パフォーマンスを向上させるためのネストされたクエリからのものです。

    詳細については、私のブログのこの記事を参照してください:



    1. 最後の行のみを表示するPHPWhileループ

    2. データに存在しない日付を含む、さまざまな日付のデータを生成します

    3. mysqlでHaversine式を高速化する方法は?

    4. MYSQLは、コンマ区切りの値を持つセルを検索します