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

mysqlでのキーセットページネーションのインデックス作成

    私は以前にこの問題に遭遇しました。これが私の分析です。

    • MySQL 5.7および8.0で発生しますが、古いバージョンやMariaDBでは発生しないようです。

    • 私が好む「解決策」は、次のようにインデックスを変更することです。

         INDEX(company_id)      -- DROP this
         INDEX(company_id, id)  -- ADD this
      

    2列のインデックスは理論的にはInnoDBの1列のインデックスと同じですが(idを想定) はPK`)であり、オプティマイザーはこの事実を無視しているようです状況によっては

    また、必要に応じてPKを明示的に追加するのが好きです 。これは、スキーマの将来の読者(私を含む)に、PKを追加することで一部のクエリが恩恵を受けることを示します。

    「インデックスマージ交差」が同等の複合インデックスよりも高速であるケースはまだ見つかりません。

    将来的にデータの分布が変化し、私の「ヒント」が事態を悪化させることを恐れて、インデックスの「ヒント」を使用することは嫌いです。



    1. データをコピーせずにテーブルをコピーする

    2. AmazonRDSでmysqladminflush-hostsを実行する方法

    3. APPEND_ONLY_STORAGE_INSERT_POINTラッチ

    4. Laravelのデータベースに配列値を挿入します