首页 新闻 会员 周边 捐助

SQL Server 查询语句慢

0
悬赏园豆:10 [待解决问题]

select * From V_Sp_HandleList
where
1=1 and State&1=1 and starttime between '2010-01-01' and '2016-01-15 23:59:24'
and Status=-1 and State&1=1 and State&128=0 and ActorId='00504'
Order by StartTime desc

 

请大神看看我这条SQL 语句,查询时间需要15秒。

如果去掉Order by StartTime desc  这句查询时间1秒

如果去掉 Where 条件 加上 Order by StartTime desc  查询时间也是1秒

怎么去优化呢?谢谢咯

勿忘心安2的主页 勿忘心安2 | 初学一级 | 园豆:62
提问于:2016-01-15 16:55
< >
分享
所有回答(7)
0

V_Sp_HandleList 是视图么?  你需要分析下实际的执行计划

恭小发 | 园豆:254 (菜鸟二级) | 2016-01-15 17:24
0

条件又分大小来筛选就行了,大的在最后。

搁忆 | 园豆:612 (小虾三级) | 2016-01-15 17:35
0

select * From V_Sp_HandleList
where
 State&1=1 and

starttime between '2010-01-01' and '2016-01-15 23:59:24'  and
 Status=-1 and State&1=1 and State&128=0 and ActorId='00504' 


Order by StartTime desc

显示的字段,最好指定是什么字段,不要用*符号.

chenaran | 园豆:283 (菜鸟二级) | 2016-01-15 17:49
0

开启执行计划 看具体的在分析 。 根据你的描述 问题存在的原因是 V_Sp_HandleList可能是视图 存在大量的表连接查询,

已经查询条件走的全表扫描 

s_p | 园豆:140 (初学一级) | 2016-01-16 00:54
0

where 的条件加索引

刘宏玺 | 园豆:14020 (专家六级) | 2016-01-16 18:24
0

少用视图就是优化

hslgmq | 园豆:29 (初学一级) | 2016-01-20 09:19
0

两点,

1、在条件中,有索引的在前面,能过滤最多数据的再前面

2、查出来的数据先不order by排序,先查到临时表中,再从临时表查询排序

chengeng | 园豆:294 (菜鸟二级) | 2016-02-14 14:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册