使用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/