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

  • Learn T-SQL Querying
  • Pedro Lopes Pam Lahoud
  • 313字
  • 2021-06-24 14:38:18

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. 

主站蜘蛛池模板: 新郑市| 建宁县| 平罗县| 壤塘县| 高台县| 湖北省| 铁岭县| 新泰市| 万盛区| 宁陕县| 台北市| 文成县| 平顶山市| 天镇县| 抚州市| 宜都市| 滕州市| 建昌县| 宁强县| 富顺县| 北碚区| 巍山| 盐亭县| 淮安市| 台湾省| 崇明县| 镇远县| 鹤壁市| 陈巴尔虎旗| 牟定县| 定陶县| 德钦县| 襄汾县| 汨罗市| 贡觉县| 赤城县| 泰兴市| 桂阳县| 海口市| 兴海县| 茂名市|