gpt4 book ai didi

MySQL 索引 |与 LIKE 一起使用

转载 作者:行者123 更新时间:2023-12-01 00:27:51 24 4
gpt4 key购买 nike

我有一个表说“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

我认为这极不可能。

关于MySQL 索引 |与 LIKE 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10944098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com