问题大概是这样的,有一个功能页面常常查询超时,有时候就算能查询出来也要很长的时间,可是有时又会很快。遇到的这种问题在排除掉网络缘由以后基本上能够从查询语句上去找缘由。网络
编译查询SQL语句和查询进程等待结果以下:spa
1.进程等待线程
2.编译查询blog
问题分析:进程
1.等待类型为SOS_SCHEDULER_YIELD而且CPU时长很长get
2.并且查询时长基本上都是消耗在编译这块,实际的查询时长不到一秒。博客
SOS_SCHEDULER_YIELD等待是SQL Server OS调度这块的线程之间的切换的等待。it
这里出于不便没有把SQL语句贴上,实际的SQL语句单单子查询就达60多个,查询语句达到200行,致使生成执行计划的时间过长。单个子查询很简单。io
出现上面的这个缘由是因为查询语句子查询太多致使编译时间过长,解决办法能够将每个子查询单独查询赋值到变量,或者把子查询冗余处理。编译
备注: 做者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点全部随笔都是原创,欢迎你们转载;但转载时必须注明文章来源,且在文章开头明显处给明连接,不然保留追究责任的权利。 《欢迎交流讨论》 |