[英]MySQL Indexing | Using it with LIKE
我有一張桌子說“ abcd”
內容如下
ID | email |
24 | abcd@g.com |
23 | asdsa@gm.com|
32 |asd@ggm.com |
現在,我已經在(ID,email)上創建了索引
當我執行查詢時,EXPLAIN SELECT * FROM abcd WHERE ID = '23'; 我可以看到索引正在被使用。
但是,當我將查詢更改為EXPLAIN SELECT * FROM abcd WHERE ID LIKE'2%';
該索引不再使用
為什么會這樣呢? 兩種情況下都不應該使用索引嗎?
謝謝
如果您的ID是整數類型,則其索引將無法像字符串索引那樣工作:它不會在內部使用小數位數,而是使用固定長度的二進制表示形式
考慮一下:“ 2%”必須與以下數字匹配:
2
20
200
2000
...
但是,對於MySQL引擎,將“ 2%”與這些表示形式進行匹配並不是一件容易的事:
0x0002
0x0014
0x00C8
0x07D0
0x4E20
...
從理論上講,它可以在內部將“ 2%”模式轉換為以下內容:
ID BETWEEN 20 AND 29
OR ID BETWEEN 200 AND 299
OR ID BETWEEN 2000 AND 2999
我認為它極不可能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.