日期:2014-05-19  浏览次数:20497 次

还是SQL查询太慢的问题,建索引也没用
select   userid   from   tablea   where   dateandtime> '2007-5-11 '

SQL就这么简单,tablea里有160万条记录,主键是userid,自增型,SQL   SERVER里已自动创建为聚集索引,名为PK_tablea,dateandtime列也创建了一个非聚集索引,但是这个列是会有重复值的,虽然很少,因此无法把dateandtime也加入到PK_tablea的列中去。

由于dateandtime不是按顺序排列的,所以当查询的行数很多时就会非常慢。我看了查询计划。当用
select   userid   from   tablea   where   dateandtime> '2007-5-19 '
时,大概是几百条记录,很快就出来了。并且查询使用了索引dateandtime
但是当用
select   userid   from   tablea   where   dateandtime> '2007-5-11 '
时,大概有5万条记录。查询非常慢大概20几秒。并且查询使用的是PK_tablea索引,而且还是全表扫描。


请问这样的查询该怎么优化?索引也建了,但又不能建为聚集索引。

------解决方案--------------------
select * from tab with(index(indexname))
where ....