主頁 > 知識庫 > 淺析SQL Server的聚焦使用索引和查詢執(zhí)行計劃

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

熱門標(biāo)簽:互聯(lián)網(wǎng)電話外呼系統(tǒng) 千呼電話機器人可以試用嗎 安卡拉地圖標(biāo)注app 零成本地圖標(biāo)注賺錢 電銷需要外呼系統(tǒng)嗎 400電話辦理泰安 家庭農(nóng)場地圖標(biāo)注名稱怎樣起名 我要地圖標(biāo)注數(shù)量有限制嗎 電話機器人怎么代理商

前言

上一篇《淺析SQL Server 聚焦索引對非聚集索引的影響》我們講了聚集索引對非聚集索引的影響,對數(shù)據(jù)庫一直在強調(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、強制主鍵使用聚集索引

強制使用索引我們利用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)返回主鍵列時利用非聚集索引,這里我們強制讓它走聚集索引,而對于第2個查詢就不用說了,此時二者的開銷是相當(dāng)?shù)摹?/p>

3、強制使用非聚集索引

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

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)使用索引、強制使用聚集索引、強制使用非聚集索引我們知道對于對于檢索所有列結(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í)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,同時也希望多多支持腳本之家!

您可能感興趣的文章:
  • SQL Server 2005通用分頁存儲過程及多表聯(lián)接應(yīng)用
  • SQL設(shè)置SQL Server最大連接數(shù)及查詢語句
  • 解析SQL Server聚焦移除(Bookmark Lookup、RID Lookup、Key Lookup)
  • 詳解SQL Server的聚焦過濾索引
  • 淺述SQL Server的聚焦強制索引查詢條件和Columnstore Index
  • 淺析SQL Server的分頁方式 ISNULL與COALESCE性能比較
  • 詳解SQL Server中的數(shù)據(jù)類型
  • 淺析SQL Server 聚焦索引對非聚集索引的影響
  • 如何快速刪掉SQL Server登錄時登錄名下拉列表框中的選項
  • 淺談SQL Server交叉聯(lián)接 內(nèi)部聯(lián)接

標(biāo)簽:來賓 新鄉(xiāng) 文山 黃山 池州 東營 濱州 大同

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺析SQL Server的聚焦使用索引和查詢執(zhí)行計劃》,本文關(guān)鍵詞  淺析,SQL,Server,的,聚焦,使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺析SQL Server的聚焦使用索引和查詢執(zhí)行計劃》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺析SQL Server的聚焦使用索引和查詢執(zhí)行計劃的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章