官术网_书友最值得收藏!

Summary

We explored the internals of SQL Server query optimization and defined many important concepts that any database professional who writes T-SQL queries will keep coming back to, especially when troubleshooting query performance issues. The CE is a fundamental part of SQL Server's Query Optimizer; knowing how it uses statistics, and the importance of keeping updated and relevant statistics for the overall query optimization process, empowers database professionals to write good queries—queries that both drive and leverage good database schema designs. But also, understanding the main estimation model assumptions allows us to account for these when writing queries and to avoid pitfalls that hurt query performance. We will see these pitfalls in much more detail in Chapter 6, Easily-Identified T-SQL Anti-Patterns, and Chapter 7, Discovering T-SQL Anti-Patterns in Depth.

If, at the end of the optimization process, we still have a plan that is perceived to be inefficient, some avenues of investigation can help us determine the potential reasons for this inefficiency:

  • Is it a bad CE? Analyze the execution plan to find the ratio between estimated and actual rows in costly operators. Perhaps the statistics are stalled and need to be updated?
  • Is it a parameter-sensitive plan? Is it a dynamic unparameterized T-SQL statement? Or perhaps parameter-sniffing has caused a skewed query plan? The importance of parameters was discussed in Chapter 2Understanding Query Processing, in the The importance of parameters section.
  • Is it an inadequate physical database design? Are there missing indexes? Are data types for keys inadequate, thus leading to unwarranted conversions that affect estimations? Is referential integrity enforced by triggers instead of indexed foreign keys?

These are some of the aspects we must investigate as a potential source of plan inefficiency. In the next chapter, we will learn how to identify these inefficiencies by investigating the various aspects of query execution plans. 

主站蜘蛛池模板: 余庆县| 恩施市| 镇沅| 柳江县| 云梦县| 阿鲁科尔沁旗| 延吉市| 石屏县| 和顺县| 茌平县| 满城县| 抚顺县| 申扎县| 磐安县| 浦东新区| 印江| 苍山县| 汽车| 启东市| 伊通| 永兴县| 龙胜| 吐鲁番市| 墨玉县| 郎溪县| 资兴市| 涿州市| 德安县| 上蔡县| 田东县| 灵寿县| 宕昌县| 天全县| 宜阳县| 新乡县| 大埔区| 麻栗坡县| 乐都县| 平昌县| 迭部县| 湘潭县|