欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

SQL開發(fā)中容易忽視的一些小地方(五)

系統(tǒng) 1971 0
原文: SQL開發(fā)中容易忽視的一些小地方(五)

??? 背景:

?????????? 索引分類:眾所周知,索引分為聚集索引和非聚集索引。

?????????? 索引優(yōu)點(diǎn):加速數(shù)據(jù)查詢。

?????????? 問題:然而我們真的清楚索引的應(yīng)用嗎?你寫的查詢語句是否能充分應(yīng)用上索引,或者說你如何設(shè)計(jì)你的索引讓它更高效?

?????????? 經(jīng)歷:以前本人只知道索引的好處,但是是否能夠真正讓它發(fā)揮作用,并無太多理論,為些本人做了些DEMO,來簡單說明下什么情況下才能充分利用索引。

? ? 案例:

?????????? 這里建立一個學(xué)生表:有如下字段,此時表中沒有建立任何索引。

CREATE TABLE [dbo].[student](
?? ?[ID] [int] IDENTITY(1,1) NOT NULL,--學(xué)生ID
?? ?[sUserName] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,--學(xué)生姓名
?? ?[sAddress] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,--學(xué)生地址
?? ?[classID] [int] NULL,--學(xué)生所屬班級ID
?? ?[create_date] [datetime] NULL CONSTRAINT [DF_student_create_date]? DEFAULT (getdate()) --入校時間

) ON [PRIMARY]
?

???? 業(yè)務(wù)需求:

??????????? 查詢班級ID為9的所有學(xué)生的姓名和地址。

???? 情況一:
? --字段沒有建立任何索引
select sUserName,sAddress from student

where classID=9

? ? ? ? ? ?? 執(zhí)行計(jì)劃如下圖:

SQL開發(fā)中容易忽視的一些小地方(五)

???????????? 結(jié)論:在沒有任何索引的情況下,查詢會選擇全表掃描.

?????? 情況二:

???????????????? 給ID自增列創(chuàng)建一個聚集索引,我們很多情況下都是這樣默認(rèn)的,主鍵上就是聚集索引。同樣的查詢,不同的查詢計(jì)劃,發(fā)現(xiàn)此時雖然在輸出列和條件中沒有ID,但是查詢選擇了聚集查詢.

???????????????? 執(zhí)行計(jì)劃圖同圖一。

SQL開發(fā)中容易忽視的一些小地方(五)

?????? 情況三: 在classID上創(chuàng)建非聚集索引。

???????????????? 結(jié)論:雖然條件列中出現(xiàn)了classID索引列,但是輸出列中并沒有創(chuàng)建任何索引,依然選用聚集掃描方式查詢.
?

?????? 情況四: 在sUserName上創(chuàng)建非聚集索引

??????????????? 結(jié)論:同上

?????? 情況五: 繼續(xù)在sAddress上創(chuàng)建非聚集索引

??????????????? 結(jié)論:同上
?

??????? 情況六: 建立sUserName與sAddress的聯(lián)合非聚集索引

???????????????? 結(jié)論:同上
?

??????? 情況七: 在classID與sUserName上創(chuàng)建索引

????????????????? 結(jié)論:同上
?

??????? 情況八: 在classID,sUserName,sAddress上創(chuàng)建聯(lián)合非聚集索引

? ? ? ? ? ? ? ? ?? 執(zhí)行計(jì)劃圖如下:


????????????????? 結(jié)論:當(dāng)條件中出現(xiàn)的列加上輸出列和聯(lián)合索引列完全匹配時全用上索引掃描.

???????? 情況九: 刪除所有索引,保留ID的聚集索引。以聚集索引列做為條件之一來查詢.

select sUserName,sAddress from student

where ID=10021002

?????? 或者:select sUserName,sAddress from student
where ID=10021002 and classID=9

? ? ? ? ? ? ? ? ??? 執(zhí)行計(jì)劃圖:

SQL開發(fā)中容易忽視的一些小地方(五) ?

? ? ? ? ? ? ? ? ? ??

??????? 所有情況總結(jié):

?????????????? 1:當(dāng)使用 聚集索引掃描時的IO情況:表 'student'。掃描計(jì)數(shù) 1,邏輯讀取 70 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。

?????????????? 2:當(dāng)使用聚集索引掃描時的IO情況( 條件中未出現(xiàn)聚集索引列 ):表 'student'。掃描計(jì)數(shù) 3,邏輯讀取 8835 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。?

? ? ? ? ? ? ?? 3:當(dāng)使用聚集索引掃描時的IO情況( 條件中出現(xiàn)聚集索引列 ) :表 'student'。掃描計(jì)數(shù) 1,邏輯讀取 3 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。

?????????????? 結(jié)論:

??????????????????? 1:在沒有正確的索引情況下,會增加表的掃描次數(shù).

??????????????????? 2:數(shù)據(jù)在查詢時會先找匹配的索引.
?????????????????????? 1):如果在條件列中出現(xiàn)聚集索引列,則無論輸出列是否建立索引都會按聚集索引查找(有聚集索引 ).
?????????????????????? 2):如果在條件列中沒有出現(xiàn)聚集索引列,則查找匹配的非聚集索引,如果有匹配的索引則按相應(yīng)索引查詢,否則再掃描聚集索引(有聚集索引 ).

?????????????????????? 3):查找匹配的非聚集索引(沒有聚集索引 ).

? ? ? 本文總結(jié):

????????????????? 我只是簡單的寫了些關(guān)于索引使用的DEMO,在實(shí)際開發(fā)中要按實(shí)際情況來分析,有時并不能完全使用上索引,但是可以讓查詢產(chǎn)生最少的IO讀取以及表掃描次數(shù)。

SQL開發(fā)中容易忽視的一些小地方(五)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产九色在线观看 | 中国妞xxx | 九九九色 | 嫩草影院在线入口 | avtt天堂网Av无码 | 日本不卡视频在线播放 | 蜜臀视频在线播放 | 精品国产乱码久久久久久丨区2区 | 色婷婷久久久 | 中国一级黄色片 | 一级观看免费完整版视频 | 日本粉嫩一区二区三区视频 | 九九九九精品视频在线播放 | 丝袜美腿中文字幕 | 欧美一级久久久久久久大片 | 免费又粗又硬进去好爽A片视频 | 国产 在线 | 日韩 | 国产精品1区2区3区 国产成人aaa在线视频免费观看 | 天天操2018| 欧美在线一级精品 | jav中文字幕| 国产精品主播视频 | 久久亚洲在线 | 午夜性色一区二区三区不卡视频 | 欧美国产日韩一区二区三区 | 国产日韩欧美在线观看 | 日本高清高色 | 奇米影视888狠狠狠777九色 | 91免费公开视频 | 不卡在线一区 | 国产精品美女久久久久aⅴ国产馆 | 91视频青娱乐 | 亚洲综合国产 | 一本一本久久α久久精品66 | 欧美电影网 | 亚洲色综合图区p | 亚洲黑人在线观看 | 成人二区 | 国产一国产一有一级毛片 | 欧美a级成人淫片免费看 | 亚洲免费视频在线观看 |