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

where句があってもSELECTCOUNT(*)は遅い

    InnoDBはクラスター化された主キーを使用するため、主キーは行とともにデータページに格納され、個別のインデックスページには格納されません。範囲スキャンを実行するには、データページの潜在的に広い行をすべてスキャンする必要があります。このテーブルにはTEXT列が含まれていることに注意してください。

    私が試す2つのこと:

    1. optimize tableを実行します 。これにより、データページがソートされた順序で物理的に保存されるようになります。これにより、クラスター化された主キーの範囲スキャンが高速化される可能性があります。
    2. change_event_id列だけに追加の非プライマリインデックスを作成します。これにより、その列のコピーがインデックスページに保存され、スキャンがはるかに高速になります。作成後、Explain Planをチェックして、新しいインデックスを使用していることを確認してください。

    (また、change_event_id列をbigint unsignedにしたい場合もあります。 ゼロから増分している場合)



    1. PHPで2つの日付の間の日数を計算する方法は?

    2. KEYキーワードはどういう意味ですか?

    3. SQLclおよびSQL*Plus(Oracle)で「選択されたX行」を削除する方法

    4. pg_restoreの実行時に、ファイルヘッダーで[アーカイバ]のサポートされていないバージョン(1.13)を取得する