MySQL - ROUND() 是否使用索引?

标签 mysql indexing rounding

使用ROUND()函数时MySQL是否使用任何索引?

考虑这个查询:

SELECT CPRID,ROUND(Dist*1000) AS `Distance` 
FROM CPRaw_ID1 
GROUP BY ROUND(1000*Dist) 
ORDER BY ROUND(Dist*1000)

MySQL 还会在 Dist 列上使用我的索引吗?

最佳答案

首先你可以使用EXPLAIN查看查询中是否使用 Dist 上的索引。我做了一个实验,发现事实并非如此。

实际上,一个建议是avoid using functions in where clause 。另外,这解释了how mysql uses indexes .

在您发布的查询中,我认为您可以尝试创建另一个表并放入查询结果:

SELECT CPRID,ROUND(Dist*1000) AS `Distance` 
FROM CPRaw_ID1

进入该临时表并在距离上建立索引。然后索引将用于加速查询。

关于MySQL - ROUND() 是否使用索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8470261/

相关文章:

mysql - CSV加载数据不导入文件

floating-point - 将带符号的单精度 float 舍入到最接近的整数的有效方法是什么?

sqlite - SQLite-删除十进制的尾随零

mysql - mysql查询中字母 't'是什么意思

c# - Entity Framework 代码优先异常 "Duplicate entry ' 0' for key ' PRIMARY'"

sql-server - SQL 中多维度的类型 2 有效日期索引性能

java - 在java中索引Treemap值

Java:四舍五入到最接近 5 的倍数(向上或向下)

mysql - 有关 Mysql 计数的任何建议

Excel - SUMIF 索引和匹配