インデックスの作成は非常に簡単です。mysql ステートメントを作成するときに、このインデックス名 cid がいつ使用されますか?
それとも、この cid は mysql が内部でインデックスを処理する場合にのみ使用され、ステートメントを作成する場合には使用されませんか?
インデックスの作成は通常このように行われるのでしょうか? MySQL はインデックスに関するすべてを内部で処理しますか?やはり自分で文章を書く必要があるのでしょうか?
インデックスの作成は非常に簡単です。mysql ステートメントを作成するときに、このインデックス名 cid がいつ使用されますか?
それとも、この cid は mysql が内部でインデックスを処理する場合にのみ使用され、ステートメントを作成する場合には使用されませんか?
インデックスの作成は通常このように行われますか? MySQL はインデックスに関するすべてを内部で処理しますか?やはり自分で文章を書く必要があるのでしょうか?
特定の SQL クエリがインデックスを使用しているかどうかが気になる場合は、EXPLAIN SELECT * FROM xxx WHERE yyy
を使用してクエリ プランを確認すると、どのインデックスが使用されているかがわかり、ここにインデックス名が表示されます
インデックス名を使用する別の機会があります。つまり、クエリに特定のインデックスの使用を強制したい場合は、SELECT * FROM xxx FORCE INDEX yyy WHERE zzz
, 相反如果希望强制忽略某个索引, 可以用SELECT * FROM xxx IGNORE INDEX yyy WHERE zzz
差別化の役割があります
まず最初に、インデックスとは何か、そしてインデックスによってクエリが高速化される理由を理解する必要があります。インデックスとは、データが特定の並べ替えルールに従って配置されることを意味します。たとえば、ジョイントなどです。 index (a, b, c) will 最初に、データは a b c に従ってコーディングされます。 select * from tb1 where a=1 and b=2 order by c などのクエリが作成されると、mysql は最初に a フィールドを使用します。このとき、b のデータは、a の規則に従ってコーディングされているため、データ範囲も迅速に見つけることができます。したがって、このような単純な最下層がない場合、mysql はディスク上のデータから行を取得し、条件を比較して、条件を満たさないものを破棄します。もちろん、これら以外にも、mysql クラスター化インデックス、インデックス カバレッジ、myisam innodb インデックス ルールに従ってファイルを並べ替えます。myisam インデックスの葉は、データを直接保存するものではありません。 innodb データは物理行への参照を指しますが、主キーが明示的に指定されていない場合、システムは暗黙的な主キーを自動的に生成し、単に主キーへの参照を指します。システム Learn
を使用することをお勧めします