日期:2014-05-17  浏览次数:20535 次

Sql 查询性能问题
对sql查询机制不是太懂,对一张表(数量级百万)进行top 1000查询 用了 2秒 但是 top 10000却用了1分多钟,

有一个视图用了这张表连接其他表,top 1000 是9秒,到top 10000过了10分钟没有完成没有继续等。


请问问题出在什么地方?(sql  server 2008)
------最佳解决方案--------------------
看看执行计划。才有比较准确的定论
------其他解决方案--------------------
建议给车具体的查询语句  你直接这样写大家很难猜
------其他解决方案--------------------
LZ请参考楼上所说~
------其他解决方案--------------------
看看执行计划里面有没有表扫描或者聚集索引扫描、或者某个图标上有黄色的感叹号等等?然后看看图形化箭头的宽度是否从右面开始逐步减少。这些有也不一定表示存在问题。只是这些是需要注意的地方。
------其他解决方案--------------------
对比一下两次执行的执行计划相差在哪里
------其他解决方案--------------------
引用:
建议给车具体的查询语句  你直接这样写大家很难猜

原表的话 就是select top 1000 / top 10000 * from [UTSTicket].[dbo].[xmlTicket]
视图语句:
SELECT distinct  很多字段名 都来自于 XT
  FROM [UTSTicket].[dbo].[xmlTicket] XT left join LSEPropertyNameList LP
  on XT.PropertyName=LP.PropertyName and LP.ID=1 left join GetTicketQueuelist Q
  on XT.AssignedToTeamName=Q.Name 
  
  
 where LP.PropertyName is not null 
    or Q.Name is not null 


------其他解决方案--------------------
你这个语句都是会全表扫描的吧  没索引利用  怎么快?
------其他解决方案--------------------
引用:
看看执行计划。才有比较准确的定论


视图的执行计划好大我也不会看啊,又不知道怎么给你们看到。
------其他解决方案--------------------
引用:
看看执行计划里面有没有表扫描或者聚集索引扫描、或者某个图标上有黄色的感叹号等等?然后看看图形化箭头的宽度是否从右面开始逐步减少。这些有也不一定表示存在问题。只是这些是需要注意的地方。


我尝试用了下top 5000 30分钟没有出结果,怎么开销涨了这么多?