前言

前面幾節(jié)都是講的基礎(chǔ)內(nèi)容,本節(jié)我們講講索引性能優(yōu)化,當(dāng)對(duì)大數(shù)據(jù)進(jìn)行處理時(shí)首先想到的就是索引,一旦遇到這樣的問題則手忙腳亂,各種查資料,為何平常不扎實(shí)基本功呢,我們由淺入深,簡(jiǎn)短的內(nèi)容,深入的理解,而非一上來就把問題給框死,立馬給出解決方案,拋出問題,再到解決問題,你GET了沒有。

Bookmark Lookup、RID Lookup、Key Lookup定義

一說到這三者,如果對(duì)索引研究不深的童鞋估計(jì)是懵逼的,什么玩意,我們姑且將上面三者翻譯為:標(biāo)簽查找、行ID查找、鍵查找。標(biāo)簽查找和鍵查找是一個(gè)意思,在SQL 2005之前叫Key Lookup。怎么解釋,如何定義呢?首先我們不看定義,直接看下面一步一步解析,如果你實(shí)在忍不住,請(qǐng)看園友【永紅】的見解,解釋還是非常到位。我們簡(jiǎn)短的說明下此三者概念。

在查詢中,我們對(duì)返回的列在查詢條件上若建立了非聚集索引,此時(shí)將可能嘗試使用非聚集索引查找,如果返回的列沒有創(chuàng)建非聚集索引,此時(shí)會(huì)返回到數(shù)據(jù)頁中去獲取這些列的數(shù)據(jù),即使表中存在聚集索引或者沒有,都會(huì)返回到表中或者聚集索引中去獲取數(shù)據(jù)。對(duì)于以上場(chǎng)景描述,如果表沒有創(chuàng)建聚集索引則稱為Bookmar Lookup,如果表中沒有聚集索引但是存在非聚集索引我們稱為RID Lookup。看到這里我們就會(huì)想法操作如此耗時(shí),還要返回到基表中去獲取數(shù)據(jù),所以才有了我們本節(jié)來移除以上三者來提高查詢性能。接下來我們一起來看看。

拋出Bookmark Lookup、RID Lookup、Key Lookup問題

我們首先創(chuàng)建如下表

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

USE TSQL2012 
GO
CREATE TABLE Sales.Orders 
(
[orderid] INT,
[shipaddress] VARCHAR(100),
[shipcity] VARCHAR(100),
[shipregion] VARCHAR(100))
GO

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式