当前位置: 代码迷 >> Sql Server >> SQLServer表查询变慢解决方法
  详细解决方案

SQLServer表查询变慢解决方法

热度:25   发布时间:2016-04-24 10:44:24.0
SQLServer表查询变慢
Card表 ,慢慢积累到现在有300多万条数据了。现在客户反应有时候查询很慢,有时候正常。
1.请问一般怎么检查导致这种状况的原因?
2.考虑怎么优化,从哪些场景考虑?
3.具体优化方法,请赐教。(包括数据库是否考虑压缩...)
求DBA大神~
------解决方案--------------------
没实际诊断+分析,没法猜原因
或许慢时是因为阻塞,可能性太多
乐意提供有偿优化支持
------解决方案--------------------
可能的原因很多,如锁阻塞,索引缺失,索引碎片,服务器磁盘IO繁忙等.

建议具体问题应具体分析,看所谓"查询很慢"时对应执行的TSQL语句是什么,当时进程是否有阻塞.
分析原因,然后针对性的解决问题.
------解决方案--------------------
1、分析发生问题得时间点,比如业务高峰期
2、查看发生问题时的锁,阻塞信息
3、监控服务器IO变化
4、查看该查询相关表的碎片状况,索引状况
5、对查询语句进行优化

以上做了,基本能找到问题点,就好办了。 
具体问题具体分析。 lz参考 

------解决方案--------------------
如果只是这个表涉及的功能很慢,可以考虑把这些查询的执行计划贴出来,如果整个服务器很慢,建议从等待状态入手
------解决方案--------------------
300多万条数据 算中小吧
索引做对了,应该不会慢
除非是like '%xxx%'
------解决方案--------------------
没积分发问题
A表有MODULE_NAME(模块名称)和MODULE_ID列,其中MODULE_ID为空,MODULE_NAME列为一个这样格式可能是:”1、模块列表-产品实现-献血服务-献血核查。“,也可能是“1、产品实现。”
B表(模块名称表)有ID和NAME(模块名称)列,NAME列的数据为标准信息,如“产品实现”。
数据就是这样的:A表的模块名称列里的数据包含B表的NAME的数据。
现在想通过将A表关联B表实现将B表的ID更新到A表的MODULE_ID列。
请问如何实现,谢谢。
  相关解决方案