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然后执行。然后创建后再看看执行计划,对比一下。应该是丢失索引