当前位置:  开发笔记 > 数据库 > 正文

带有where子句和group by的SQL max()函数不能有效地使用索引

如何解决《带有where子句和groupby的SQLmax()函数不能有效地使用索引》经验,为你挑选了0个好方法。

我有一个MYTABLE大约有25列的表,其中两列是USERID (integer)USERDATETIME (dateTime).

我在这两个列上有一个关于此表的索引,USERID后面是第一列USERDATETIME.

我想获得每个USERID的最大USERDATETIME.所以:

select USERID,MAX(USERDATETIME) 
from MYTABLE WHERE USERDATETIME < '2015-10-11'
GROUP BY USERID

我希望优化器能够找到每个唯一的USERID和最大的USERDATETIME,其中搜索次数等于唯一USERIDs 的数量.而且我希望这是合理的.我在myTable中有2000个用户ID和600万行.但是,实际计划显示索引扫描中有600万行.如果我使用USERDATETIME/ 的索引USERID,计划将更改为使用索引搜索,但仍然是600万行.

为什么SQL不会以减少处理行数的方式使用索引?

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有