首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql的where语句中查询某个时间之后的话速度错误慢,不加where反而很快

2013-01-11 
sql的where语句中查询某个时间之后的话速度异常慢,不加where反而很快。查询异常的语句:很慢很慢,几秒钟才几

sql的where语句中查询某个时间之后的话速度异常慢,不加where反而很快。
查询异常的语句:很慢很慢,几秒钟才几十条数据出来
select  A.Models,B.area_level1 province, B.area_level2 city,A.senddate acctime  
from  tb_saletest  A left join  tb_LAC_TEMP B ON A.LAC=B.LAC AND A.CELLID=B.CELLID 
where A.senddate>='2012-12-11' and A.senddate<'2012-12-12'  

很快,1秒不到查询完成。
select  A.Models,B.area_level1 province, B.area_level2 city,A.senddate acctime  
from  tb_saletest  A left join  tb_LAC_TEMP B ON A.LAC=B.LAC AND A.CELLID=B.CELLID 
where A.senddate>='2012-12-10' and A.senddate<'2012-12-12'  


以上两条只是起始时间不一致。去掉where语句的话,2秒查完全部50万数据。加了超过2012.12.11之后的时间就变得很异常。


[解决办法]
查看执行计划,把占用资源位置建上索引

--没建索引时,建上以下索引再测测

Create index IX_tb_saletest_ALL on tb_saletest(senddate,LAC,CELLID)
Create index IX_tb_LAC_TEMP_ALL on tb_LAC_TEMP(LAC,CELLID)

[解决办法]
你可以删除索引执行的时候看看执行计划,即ctrl+M然后执行。然后创建后再看看执行计划,对比一下。应该是丢失索引

热点排行