Railsのcreated_atインデックス、未使用のインデックス
P粉384679266
P粉384679266 2024-03-21 23:40:41
0
1
268

CacheSync というモデルがあり、mysql にはインデックスがあることが示されています。

リーリー

しかし、説明しようとすると、インデックスを使用していないと言われます:

リーリー

なぜインデックスを使用しないのでしょうか?

###ご協力いただきありがとうございます、 ケビン

P粉384679266
P粉384679266

全員に返信(1)
P粉421119778

私の経験では、オプティマイザが条件がテーブルの 20% 以上に一致すると推定した場合、テーブル スキャンに戻ります。クラスター化インデックスからすべての行を読み取る方が、セカンダリ インデックスの値を検索してから別の検索を行ってテーブルから対応する行を取得するよりも高速であると推測されます。

20% のしきい値は公式の機能ではなく、私が観察しただけです。 MySQL の現在のバージョンでは構成できません。

インデックス ヒントを使用すると、テーブル スキャンのコストが高すぎることを納得させることができます。

リーリー

指定したインデックスがクエリ内の条件に関連していない場合にのみ、テーブル スキャンが実行されます。

インデックス ヒントの詳細については、https://dev.mysql.com/doc/refman/8.0/en/index-hints.html を参照してください。

私は Rails 開発者ではありませんが、この古い回答は、インデックス ヒント構文を Rails に渡す方法を示しています: https://stackoverflow.com/a/13904227/20860 わかりませんこれは現在でも行われている方法です。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!