84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
CacheSync というモデルがあり、mysql にはインデックスがあることが示されています。
しかし、説明しようとすると、インデックスを使用していないと言われます:
なぜインデックスを使用しないのでしょうか?
私の経験では、オプティマイザが条件がテーブルの 20% 以上に一致すると推定した場合、テーブル スキャンに戻ります。クラスター化インデックスからすべての行を読み取る方が、セカンダリ インデックスの値を検索してから別の検索を行ってテーブルから対応する行を取得するよりも高速であると推測されます。
20% のしきい値は公式の機能ではなく、私が観察しただけです。 MySQL の現在のバージョンでは構成できません。
インデックス ヒントを使用すると、テーブル スキャンのコストが高すぎることを納得させることができます。
指定したインデックスがクエリ内の条件に関連していない場合にのみ、テーブル スキャンが実行されます。
インデックス ヒントの詳細については、https://dev.mysql.com/doc/refman/8.0/en/index-hints.html を参照してください。
私は Rails 開発者ではありませんが、この古い回答は、インデックス ヒント構文を Rails に渡す方法を示しています: https://stackoverflow.com/a/13904227/20860 わかりませんこれは現在でも行われている方法です。
私の経験では、オプティマイザが条件がテーブルの 20% 以上に一致すると推定した場合、テーブル スキャンに戻ります。クラスター化インデックスからすべての行を読み取る方が、セカンダリ インデックスの値を検索してから別の検索を行ってテーブルから対応する行を取得するよりも高速であると推測されます。
20% のしきい値は公式の機能ではなく、私が観察しただけです。 MySQL の現在のバージョンでは構成できません。
インデックス ヒントを使用すると、テーブル スキャンのコストが高すぎることを納得させることができます。
リーリー指定したインデックスがクエリ内の条件に関連していない場合にのみ、テーブル スキャンが実行されます。
インデックス ヒントの詳細については、https://dev.mysql.com/doc/refman/8.0/en/index-hints.html を参照してください。
私は Rails 開発者ではありませんが、この古い回答は、インデックス ヒント構文を Rails に渡す方法を示しています: https://stackoverflow.com/a/13904227/20860 わかりませんこれは現在でも行われている方法です。