最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析SQL Server的聚焦使用索引和查詢執(zhí)行計劃

 更新時間:2016年12月06日 10:46:18   作者:JeffckyWang  
本文通過介紹默認(rèn)使用索引、強(qiáng)制使用聚集索引、強(qiáng)制使用非聚集索引讓我們知道對于檢索所有列結(jié)果集使用主鍵的聚集索引是最佳選擇。有興趣的朋友可以看下

前言

上一篇《淺析SQL Server 聚焦索引對非聚集索引的影響》我們講了聚集索引對非聚集索引的影響,對數(shù)據(jù)庫一直在強(qiáng)調(diào)的性能優(yōu)化,所以這一節(jié)我們統(tǒng)籌講講利用索引來看看查詢執(zhí)行計劃是怎樣的,簡短的內(nèi)容,深入的理解。

透過索引來看查詢執(zhí)行計劃

我們首先來看看第一個例子

1、默認(rèn)使用索引

USE TSQL2012
GO
SELECT orderid 
FROM Sales.Orders
SELECT * 
FROM Sales.Orders

上述我們看到第2個查詢的所需要的開銷是第1個查詢開銷的3倍,當(dāng)然其中也涉及到第1個查詢只是返回一列而第2個查詢返回所有列,這其中也耗費一小部分性能。對于SQL Server查詢而言,它內(nèi)部會利用索引來走最短的路徑獲取最優(yōu)的性能。我們能夠注意到即使將orderid作為主鍵,但是返回數(shù)據(jù)并不是采用的主鍵所自動生成的聚集索引而是非聚集索引。相信有很多人主觀上覺得返回主鍵而且查詢沒有查詢條件應(yīng)該是走主鍵的聚集索引,但是有時候事實并非如此,上一篇我們已經(jīng)討論過這個問題,不再敘述。在第2個查詢中利用*返回數(shù)據(jù)則是利用主鍵的聚集索引。

2、強(qiáng)制主鍵使用聚集索引

強(qiáng)制使用索引我們利用With(index(索引名稱))來創(chuàng)建,如下:

USE TSQL2012
GO
SELECT orderid 
FROM Sales.Orders WITH(INDEX(PK_Orders))
SELECT * 
FROM Sales.Orders WITH(INDEX(PK_Orders))

我們從上可以看出默認(rèn)返回主鍵列時利用非聚集索引,這里我們強(qiáng)制讓它走聚集索引,而對于第2個查詢就不用說了,此時二者的開銷是相當(dāng)?shù)摹?/p>

3、強(qiáng)制使用非聚集索引

我們繼續(xù)往下看,對查詢強(qiáng)制使用非聚集索引查找,如下:

USE TSQL2012
GO
SELECT orderid 
FROM Sales.Orders WITH(INDEX(idx_nc_custid))
SELECT * 
FROM Sales.Orders WITH(INDEX(idx_nc_custid))

由上可見,二者開銷區(qū)別之大,對于使用非聚集索引查詢1返回單列,而查詢2返回所有列的速度快如此之多,通過以上默認(rèn)使用索引、強(qiáng)制使用聚集索引、強(qiáng)制使用非聚集索引我們知道對于對于檢索所有列結(jié)果集使用主鍵的聚集索引是最佳選擇。

總結(jié)

通過上述演示我們知道即使創(chuàng)建了聚集索引也不會利用聚集索引檢索結(jié)果,有時候使用非聚集索引比使用聚集索引會提供更好的性能,當(dāng)然不能一概而論,二者皆有使用場景。當(dāng)每一次面試時談到數(shù)據(jù)庫優(yōu)化時,第一想到的是索引,然后就沒有下文了,如何使用索引,怎么在不同場景使用不同的索引呢?在任何數(shù)據(jù)庫中索引一直都是一個很大的話題且是一個復(fù)雜的內(nèi)容,復(fù)雜的內(nèi)容皆是由簡單堆積而成,我們必須如蝸牛般去慢慢研究,抽繭剝絲,最終才會有一個好的效果。簡短的內(nèi)容,深入的理解。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,同時也希望多多支持腳本之家!

相關(guān)文章

  • MSSQL數(shù)據(jù)類型及長度限制詳細(xì)說明

    MSSQL數(shù)據(jù)類型及長度限制詳細(xì)說明

    在 Microsoft® SQL Server™ 中,每個列、局部變量、表達(dá)式和參數(shù)都有一個相關(guān)的數(shù)據(jù)類型,這是指定對象可持有的數(shù)據(jù)類型(整型、字符、money 等等)的特性。
    2008-08-08
  • SQL中merge into用法詳解

    SQL中merge into用法詳解

    merge into 用法它是一種常見的SQL語法,用于更新,插入和刪除表中的數(shù)據(jù),本文給大家介紹SQL中merge into用法,感興趣的朋友一起看看吧
    2025-04-04
  • Sqlserver 死鎖查詢以及解鎖方法

    Sqlserver 死鎖查詢以及解鎖方法

    這篇文章主要介紹了Sqlserver 死鎖查詢以及解鎖方法,通過實例代碼講解了sqlserver查看哪個表被鎖表了以及解鎖方法,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • mybatis動態(tài)sql實現(xiàn)邏輯代碼詳解

    mybatis動態(tài)sql實現(xiàn)邏輯代碼詳解

    mybatis通過將sql配置xml文件中,通過解析xml動態(tài)標(biāo)簽來實現(xiàn)動態(tài)sql,本文以xml文件為例給大家介紹mybatis動態(tài)sql的實現(xiàn)代碼,感興趣的朋友一起看看吧
    2021-08-08
  • sql server利用不同語種語言顯示報錯錯誤消息的方法示例

    sql server利用不同語種語言顯示報錯錯誤消息的方法示例

    這篇文章主要給大家介紹了關(guān)于sql server利用不同語種語言顯示報錯錯誤消息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用sql server具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Linux安裝ODBC連接SQLServer數(shù)據(jù)庫的步驟

    Linux安裝ODBC連接SQLServer數(shù)據(jù)庫的步驟

    這篇文章主要介紹了Linux安裝ODBC連接SQLServer數(shù)據(jù)庫?,本文分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 基于Sql Server通用分頁存儲過程的解決方法

    基于Sql Server通用分頁存儲過程的解決方法

    本篇文章,小編將為大家介紹基于Sql Server通用分頁存儲過程的解決方法,有需要的朋友可以參考一下
    2013-04-04
  • sql server中千萬數(shù)量級分頁存儲過程代碼

    sql server中千萬數(shù)量級分頁存儲過程代碼

    sql server中千萬數(shù)量級分頁存儲過程代碼...
    2007-04-04
  • MS SQL Server2014鏈接到MS SQL Server 2000的解決方案及問題處理

    MS SQL Server2014鏈接到MS SQL Server 2000的解決方案及問題處理

    在大數(shù)據(jù)中,我們經(jīng)常需要用到分布式數(shù)據(jù),那么在SqlServer中,我們?nèi)绾蝸韺崿F(xiàn)呢,答案就是創(chuàng)建鏈接服務(wù)器!同版本的SqlServer之間的操作網(wǎng)上有很多,今天我們來探討下不同版本SqlServer之間的鏈接問題。
    2014-07-07
  • SQL點滴24 監(jiān)測表的變化

    SQL點滴24 監(jiān)測表的變化

    在網(wǎng)上看到一篇關(guān)于監(jiān)測表中的插入,更新,刪除的方法,使用觸發(fā)器實現(xiàn)的,很有價值。
    2011-09-09

最新評論

和田市| 黔南| 泸西县| 疏附县| 措勤县| 田阳县| 兴宁市| 大厂| 云霄县| 秀山| 吴堡县| 堆龙德庆县| 崇义县| 进贤县| 务川| 始兴县| 上饶市| 舒城县| 金湖县| 内丘县| 广平县| 嵩明县| 海林市| 泸定县| 定兴县| 阳谷县| 中宁县| 德安县| 布尔津县| 儋州市| 烟台市| 山东| 东乡县| 灵台县| 临武县| 承德县| 宜阳县| 美姑县| 金沙县| 石阡县| 库车县|