mysql - 使用模数时索引是否会提高性能?

标签 mysql sql indexing

想象一个 MySQL 表,其中一个字段 id 包含从数字 1 到十亿的 10 亿行。

当我做这样的查询时

SELECT * FROM table WHERE id > 2000 AND id < 5000;

很明显,id 上的索引将提高该查询的性能。

然而,这样的索引也有助于模数,如下面的查询

SELECT * FROM table WHERE (id % 4) = 0;

在使用模数时使用索引有帮助吗?

最佳答案

没有。

索引中使用的列上的函数(几乎)总是排除索引的使用。即使这不是真的,优化器也可能决定不使用索引。仅获取四分之一的记录可能选择性不够,不值得建立索引。

关于mysql - 使用模数时索引是否会提高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386592/

相关文章:

java - 在 hibernate 中设置自增字段的id没有正确保存

python - 将列堆叠从多索引到单索引

php - 当用户按下按钮时,如何从 View 中更改模型内的值?

MySQL 在自增列中使用静态数字是否安全

c# - 具有现有数据库和具有多个源的类的 Entity Framework 与手动存储过程

java - 无法将 Java 项目与 MySQL Workbench 连接(TIMEZONE 错误)

python - 使用 loc 的 boolean 索引导致错误

sql - 为什么选择比函数调用更快?

mysql - 在 MYSQL 中创建用于更改多个字符的函数

php - MySQL - 从房间到公寓的多对一 : how to get the lowest priced room for an apartment without having to iterate through all the rooms?