自作のデータテーブルからSQL文では、テストを開始します。
- 创建表 CREATE TABLEのテスト( IDのINT(11)NOT NULL AUTO_INCREMENT、 のuname VARCHAR(255 )、 PRIMARY KEY (ID)を )。
そしてのunameフィールドにインデックスを作成します。
- 索引の追加 ALTER TABLEテストADDの インデックスuname_index(のunameを) - インデックス・ビュー を表示INDEXを FROM 試験; ![](HTTPS:// img2018.cnblogs.com /ブログ/ 905 539 / 201 810 / 905 539 - 20181010143352460 - 197 551 940 .PNG ) - レコードの追加 INSERT INTOテストVALUES((1、' ジェイ')、(2、' JAを')、(3、' PRIL ')、(4、' aybar ')。
試験結果:
ろ過:これは、(値、行の行)の行ごとの行が返された結果を意味する割合を読み取る必要があります。
unameは 'J' をLIKEテストSELECT * FROM EXPLAIN。
unameは 'J%と' のようなテストSELECT * FROM EXPLAIN。
unameは '%jを' のようなテストSELECT * FROM EXPLAIN。
unameは '%jのの%を' のようなテストSELECT * FROM EXPLAIN。
だから、インデックスの使用%が感銘を受けていないようが、フィールドの一般的な指標と相まっていないようです
- 非インデックスフィールド追加 のALTER TABLEをtest` ` ADD COLUMNを ` status`の INT(11)UNSIGNED NULLを DEFAULT 。1 AFTER `uname`
再び検出:
WHEREのuname LIKE「J」SELECT * FROMテストEXPLAIN。
unameは 'J%と' のようなテストSELECT * FROM EXPLAIN。
unameは '%jを' のようなテストSELECT * FROM EXPLAIN。
unameは '%jのの%を' のようなテストSELECT * FROM EXPLAIN。
結果:のような後のインデックスを使用せずにお問い合わせ%の数と直接一致は、一致する%値をインデックスに使用された後に開始したいです。
----疑問???
|なぜそこに、このような違いの後にフィールドを追加しますか?フィールドがidは前に2つのフィールドの一部が*インデックスフィールドがインデックス化されている選択取られるように、のuname IDは、主キーです。だから、のような文はインデックスを使用します。
非インデックスフィールドの状態、データリストの増加の背景に、そこにステータスフィールドをとり、一致する値の前の状況%が影響を受けるであろう。
*選択し、しかし。SELECT ID、または再びのunameを選択するか、IDを選択しない場合はもちろん、は、unameは、インデックスを使用します。
具体的なまたヘクタール、それを自分で試してみたいです。聞くは見た方が良いです。ない手アウトとして自分自身を参照してください。