MysqlとOracleのページングSQL文


リンク先:http://www.xx566.com/detail/143.html
  以前にまとめたように、Oracleページング・クエリー・ステートメントの最適化には、Oracleページング・ステートメントにも時間がかかりましたが、今日は面接で、異なるデータベースのページングsqlステートメントを受験しました.Oracleデータベースの作成に問題がありました.記憶を深める.
 
    Mysqlのページングは、Oracleデータベースに比べて最も簡単で、Limitキーワードを提供することで、次のように簡単にページングできます.
SELECT
  *
FROM testTable
WHERE 1 = 1
LIMIT 1, 20;

     Oracleのページングsqlは、従来rownumによってページングされていましたが、次のようになります.
SELECT
  *
FROM (SELECT
        T1.*,
        ROWNUM rn
      FROM (SELECT
              *
            FROM testTable
            ORDER BY id DESC) T1
      WHERE ROWNUM <= 20)
WHERE rn > 0;

      しかし、上記のページングsqlは、データ量が膨大な場合、以降のページングクエリーほど遅くなり、rownumとrowidでページングを行う効率の高いページングクエリーがあります.以下のようにします.
SELECT
  t1.*
FROM testTable t1, (SELECT
                      rid
                    FROM (SELECT
                            ROWNUM rn,
                            t.rid
                          FROM (SELECT
                                  ROWID rid
                                FROM testTable
                                WHERE 1 = 1) t
                          WHERE ROWNUM <= 20)
                    WHERE rn > 0) t2
WHERE 1 = 1 AND t1.ROWID = t2.rid;

    総括:ページングの応用は様々なシステムの中で、すべて必ず少なくない構成部分で、ページングsqlに対する応用と最適化もずっとプログラム開発の中の重要な成分で、絶えず記憶と総括を必要とします.