因此,我有一个 IP 地址和 RIR 范围表,因此希望在联接中链接 IP 地址的前 3 个字符。
我创建了以下索引:
CREATE INDEX My_range ON 范围 (
Range(3))
然后我运行以下查询:
解释选择*
来自ip
JOIN 范围 rt ON SUBSTR(IPAddress,1,3) = SUBSTR(
Range,1,3)
其中 IPID = 17054
而且我在 rt 线上没有看到任何可用的索引。我错过了什么??
最佳答案
以下引用来自评论中的@juergend。
Indexes can only be used on raw column data and not on data that is processed by a function like
substr()
.
要补充他所说的内容,您可能需要创建另一个索引列来保存子字符串值并加入该值。
关于mysql - 为什么Mysql不使用部分索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48092948/