亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL Server內幕之分析計劃

發布時間:2020-03-02 20:57:28 來源:網絡 閱讀:392 作者:易語隨風去 欄目:關系型數據庫

Analyzing plans

分析計劃


要真正了解查詢計劃并真正能夠發現、修復或解決查詢計劃的問題, 需要對組成這些計劃的查詢操作有一個扎實的理解。總的來說, 有太多的操作員可以在一章中討論它們。此外, 可以以無數的方式將這些運算符合并到查詢計劃中。因此, 本節側重于了解最常見的查詢運算符-查詢執行的最基本的構造塊, 并對 SQL server 如何使用它們構建各種有趣的查詢計劃提供一些了解。具體地說, 本節查看掃描并查找、聯接、聚合、聯合、選擇子查詢計劃和并行性。在了解這些基本操作和計劃如何工作之后, 可以讓你盡可能地分解并理解更大、更復雜的查詢計劃。


Scans and Seeks

掃描和查找


掃描和查找是 SQL server 用來從表和索引中讀取數據的迭代器。這些迭代器是 SQL server 支持的最基本的。它們幾乎出現在每個查詢計劃中。了解掃描和查找之間的不同之處很重要: 掃描處理整個表或一個索引的整個葉級別, 而查找有效地根據謂詞從索引的一個或多個范圍返回行。


首先看一下掃描的例子。請考慮以下查詢:

SELECT [OrderId] FROM [Orders] WHERE [RequiredDate] = '1998-03-26'


RequiredDate 列沒有索引。因此, SQL server 必須讀取 Orders 表的每一行。計算每行的 RequiredDate 的謂詞;如果謂詞為 true (即, 如果行符合資格), 則返回該行。


為了最大化性能, SQL server 盡可能在掃描迭代器中計算謂詞。但是, 如果謂詞太復雜或太貴(損耗性能), 則 SQL server 可能會在單獨的篩選器迭代程序中對其進行評估。謂詞以 WHERE 關鍵字或 XML 計劃中的標記出現在文本計劃中<Predicate></Predicate>。


以下是前面查詢的文本計劃:

|--Clustered Index Scan(OBJECT:([Orders].[PK_Orders]),

WHERE:([Orders].[RequiredDate]='1998-03-26'))


圖10-6 以掃描為例。

SQL Server內幕之分析計劃


由于掃描會觸及表中的每一行是否符合條件, 因此成本與表中的總行數成正比。因此, 如果表較小或許多行符合謂詞的條件, 則掃描是一種有效的策略。但是, 如果表很大, 并且大多數行不符合條件, 則掃描會觸及更多的頁面和行, 并執行更多不必要的 i/o


現在來看一個索引查找的示例。假設我們有一個類似的查詢, 但這次謂詞在 OrderDate 列上有一個索引:


SELECT [OrderId] FROM [Orders] WHERE [OrderDate] = '1998-02-26'


這一次, SQL server 可以使用索引直接定位到符合謂詞的行。在這種情況下, 謂詞稱為查找謂詞。在大多數情況下, SQL server 不需要顯式地評估查找謂詞,索引可確保查找操作只返回符合條件的行。


查找謂詞以SEEK關鍵字或 XML 計劃中的標記出現在文本計劃中<SeekPredicates></SeekPredicates>。

以下是本示例的文本計劃:


|--Index Seek(OBJECT:([Orders].[OrderDate]),

SEEK:([Orders].[OrderDate]=CONVERT_IMPLICIT(datetime,[@1],0)) ORDERED FORWARD)


SQL server 通過自動參數化查詢方法將參數 @1 替換為日期格式。


圖10-7 索引查找舉例。

SQL Server內幕之分析計劃


由于查找僅觸及符合資格的行和包含這些限定行的頁, 因此成本與限定行和頁的數量成正比, 而不是與表中的總行數成比例。因此, 在使用高度選擇性的查找謂詞時, 查找通常是一種更有效的策略, 即, 如果查找謂詞排除表的很大一部分。

SQL server 區分掃描和查找以及堆上的掃描 (沒有聚集索引的表)、對聚集索引的掃描以及對非聚集索引的掃描。

表10-2 所有有效組合在計劃輸出中的顯示。

SQL Server內幕之分析計劃


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

左权县| 浮山县| 宕昌县| 会同县| 永平县| 贵阳市| 平乐县| 林甸县| 江孜县| 上思县| 西乌珠穆沁旗| 资溪县| 阿克苏市| 治县。| 屏东市| 高安市| 安宁市| 农安县| 鹤山市| 德令哈市| 肇源县| 西充县| 两当县| 怀宁县| 三亚市| 遂昌县| 涪陵区| 平南县| 蕲春县| 万安县| 安远县| 衢州市| 综艺| 安顺市| 鄂州市| 钦州市| 长葛市| 清丰县| 安徽省| 剑川县| 高要市|