mysql - 为什么Mysql不使用部分索引?

标签 mysql

因此,我有一个 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/

相关文章:

php 中的 JavaScript 函数可显示更多点击信息(数据库查询)

mysql - 无法更改 mysql 中的例程

mysql 将两个表行连接到一张表中

php - MySQL请求按公共(public)值排序

Mysql SELECT 不工作

sql - 如何使用 MySQL 计算移动平均线?

mysql - 外键应自动创建一个新条目

php - 转义对象中的所有数据

mysql - 不使用 phpMyAdmin 访问数据库

php - 增加 phpmyadmin 中的文件大小限制