SQL Server 2008 高階查詢優化概念
Microsoft SQL Server 使用記憶體中的排序和雜湊聯接技術執行排序、交集、並集、差分等操作。SQL Server 利用這種型別的查詢計劃支援垂直表分割槽(有時稱為分列儲存)。
SQL Server 使用三種型別的聯接操作:
Nested Loops 聯接
合併聯接
雜湊聯接
如果一個聯接輸入很小(不到 10 行),而另一個聯接輸入很大而且已在其聯接列上建立了索引,則索引 Nested Loops 連線是最快的聯接操作,因為它們需要的 I/O 和比較都最少。有關 Nested Loops 的詳細資訊,請參閱瞭解巢狀迴圈聯接。
如果兩個聯接輸入並不小但已在二者聯接列上排序(例如,如果它們是通過掃描已排序的索引獲得的),則合併聯接是最快的聯接操作。如果兩個聯接輸入都很大,而且這兩個輸入的大小差不多,則預先排序的合併聯接提供的效能與雜湊聯接相近。但是,如果這兩個輸入的大小相差很大,則雜湊聯接操作通常快得多。有關詳細資訊,請參閱瞭解合併聯接。
雜湊聯接可以有效處理未排序的大型非索引輸入。它們對複雜查詢的中間結果很有用,因為:
中間結果未經索引(除非已經顯式儲存到磁碟上然後建立索引),而且通常不為查詢計劃中的下一個操作進行適當的排序。
查詢優化器只估計中間結果的大小。由於對於複雜查詢,估計可能有很大的誤差,因此如果中間結果比預期的大得多,則處理中間結果的演算法不僅必須有效而且必須適度弱化。
雜湊聯接可以減少使用非規範化。非規範化一般通過減少聯接操作獲得更好的效能,儘管這樣做有冗餘之險(如不一致的更新)。雜湊聯接則減少使用非規範化的需要。雜湊聯接使垂直分割槽(用單獨的檔案或索引代表單個表中的幾組列)得以成為物理資料庫設計的可行選項。有關詳細資訊,請參閱瞭解雜湊聯接。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-520802/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sql-server高階查詢SQLServer
- 《MSSQL2008高階教程》之四“SQL優化”SQL優化
- SQL高階查詢SQL
- 優化sql查詢速度優化SQL
- Sql Server 的引數化查詢SQLServer
- SQL語言基礎(高階查詢)SQL
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- 十七、Mysql之SQL優化查詢MySql優化
- 高階查詢
- SQL SERVER優化SQLServer優化
- SQL SERVER 2008安全配置SQLServer
- MySQL 優化五(關聯查詢子查詢以及 in 的效率問題)(高階篇)MySql優化
- Mongodb高階查詢MongoDB
- ❖ MongoDB 高階查詢MongoDB
- Microsoft SQL Server 2005中查詢優化器使用的統計資訊一(zt)ROSSQLServer優化
- Microsoft SQL Server 2005中查詢優化器使用的統計資訊三(zt)ROSSQLServer優化
- Microsoft SQL Server 2005中查詢優化器使用的統計資訊二(zt)ROSSQLServer優化
- 《MySQL慢查詢優化》之SQL語句及索引優化MySql優化索引
- SQL Server 跨資料庫查詢SQLServer資料庫
- sql-server不相關子查詢SQLServer
- sql-server相關子查詢SQLServer
- 資料庫高階查詢之子查詢資料庫
- SQL優化之多表關聯查詢-案例一SQL優化
- 一文終結SQL 子查詢優化SQL優化
- Sql語句本身的優化-定位慢查詢SQL優化
- 查詢優化優化
- 10箇中級到高階的SQL概念SQL
- SQL Server 語句日期格式查詢方法SQLServer
- SQL Server 查詢超時問題排查SQLServer
- SQL Server查詢慢的解決方案SQLServer
- SQL Server-簡單查詢語句SQLServer
- 如何調優 Oracle SQL系列文章:查詢優化器介紹OracleSQL優化
- SQL Server 查詢歷史執行的SQL語句SQLServer
- Hive高階操作-查詢操作Hive
- mysql高階查詢語句MySql
- MySql常用30種SQL查詢語句優化方法MySql優化
- SQL SERVER死鎖查詢,死鎖分析,解鎖,查詢佔用SQLServer
- pgsql查詢優化之模糊查詢SQL優化
- SQL Server 查詢表註釋和欄位SQLServer