国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

程序員你真的了解SQL索引嗎?

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維 SQL Server
今天我們將通過(guò)對(duì)索引使用原則的討論,來(lái)讓大家更深入的了解SQL索引。大家可以思索,自己是否真的了解它。

這篇主要來(lái)分析下索引的優(yōu)缼點(diǎn),以及如何正確使用索引。

索引的優(yōu)點(diǎn):這個(gè)顯而易見(jiàn),正確的索引會(huì)大大提高數(shù)據(jù)查詢,對(duì)結(jié)果進(jìn)行排序、分組的操作效率。

索引的缺點(diǎn):優(yōu)點(diǎn)顯而易見(jiàn),同樣缺點(diǎn)也是顯而易見(jiàn):

1:創(chuàng)建索引需要額外的磁盤空間,索引最大一般為表大小的1.2倍左右。

2:在表數(shù)據(jù)修改時(shí),例如增加,刪除,更新,都需要維護(hù)索引表,這是需要系統(tǒng)開(kāi)銷的。

3:不合理的索引設(shè)計(jì)非但不能利于系統(tǒng),反而會(huì)使系統(tǒng)性能下降。例如我們?cè)谝粋€(gè)創(chuàng)建有非聚集索引的列上做范圍查詢,此列的索引不會(huì)起到任何的優(yōu)化效果,反而由于數(shù)據(jù)的修改而需要維護(hù)索引表,從而影響了對(duì)數(shù)據(jù)修改的性能。

實(shí)際例子:還是拿前兩篇文章的學(xué)生表來(lái)講吧,要查詢成績(jī)?cè)?0分以上的學(xué)生信息select * from student where score>50。學(xué)生表包含了100000行記錄,而且學(xué)分是隨機(jī)生成的,這樣從數(shù)據(jù)量以及數(shù)據(jù)分布上都有一定的保障。

第一種情況:學(xué)生表有索引

1:存在聚集索引,但聚集索引不在學(xué)分上,這里只分析學(xué)分不是聚集索引的情況。

(1):學(xué)分上沒(méi)有索引。此時(shí)SQL會(huì)通過(guò)聚集索引來(lái)查找數(shù)據(jù),這點(diǎn)估計(jì)大家都會(huì)知道。

(2):學(xué)分上有索引。這種情況,SQL會(huì)使用上學(xué)分上的索引嗎?這個(gè)問(wèn)題估計(jì)不是每個(gè)人都能回答正確的。既然學(xué)分上有索引,而where中又有此列,理應(yīng)使用了索引,但實(shí)際情況并沒(méi)有使用索引。因?yàn)槌霈F(xiàn)了范圍查找,如果一個(gè)索引一個(gè)索引的比較,在性能上比起直接按聚集索引查找全部數(shù)據(jù)后再過(guò)濾來(lái)的差。那學(xué)分上的索引什么時(shí)候  SQL會(huì)優(yōu)先考慮呢?當(dāng)score指定為一個(gè)具體值時(shí),就能使用學(xué)分索引查找了。從下圖的SQL執(zhí)行計(jì)劃可以得知。

     

2:不存在聚集索引。

 (1):在學(xué)分上沒(méi)有索引,其它字段有索引,這種情況就會(huì)出現(xiàn)表掃描。

 (2):在學(xué)分上有索引,是否會(huì)按照學(xué)分上的索引進(jìn)行查找呢?由于上面的表數(shù)據(jù)量也不少,一般會(huì)認(rèn)為SQL不會(huì)采用表掃描,因?yàn)闀?huì)查找全部記錄,但實(shí)際情況表明SQL對(duì)于范圍查詢也行采用表掃描而不是按學(xué)生索引查詢。我們也可以強(qiáng)制SQL按學(xué)分查詢,于是有下面的SQL執(zhí)行計(jì)劃比較,我們可以清楚的看出,強(qiáng)制使用學(xué)分做為索引查詢比表搜索的性能要差很多。

 

第二種情況:學(xué)生表沒(méi)有索引。這個(gè)情況沒(méi)有分析的價(jià)值。

什么字段不適合創(chuàng)建索引?

1:不經(jīng)常使用的列,這種索引帶來(lái)缺點(diǎn)遠(yuǎn)大于帶來(lái)的優(yōu)點(diǎn)。

2:邏輯性的字段,例如性別字段等等,匹配的記錄太多,和表掃描比起來(lái)不相上下。

3:字段內(nèi)容特別大的字段,例如text等,這會(huì)大大增大索引所占用的空間以及索引更新時(shí)的速度。
   

我們說(shuō)SQL在維護(hù)索引時(shí)要消耗系統(tǒng)資源,那么SQL維護(hù)索引時(shí)究竟消耗了什么資源?會(huì)產(chǎn)生哪些問(wèn)題?究竟怎樣才能優(yōu)化字段的索引?

第一:當(dāng)數(shù)據(jù)頁(yè)達(dá)到了8K(數(shù)據(jù)頁(yè)最大為8K) 容量,如此時(shí)發(fā)生插入或更新數(shù)據(jù)的操作,將導(dǎo)致頁(yè)的分裂。

1、聚集索引的情況下:聚集索引將被插入和更新的行指向特定的頁(yè),該頁(yè)由聚集索引關(guān)鍵字決定;

2、只有堆的情況下:有空間就可以插入新的行,對(duì)行數(shù)據(jù)的更新需要更多的空間,如果大于了當(dāng)前頁(yè)的可用空間,行就被移到新的頁(yè)中,且在原位置留下一個(gè)轉(zhuǎn)發(fā)指針,指向被移動(dòng)的新行,如果具有轉(zhuǎn)發(fā)指針的行又被移動(dòng)了,那么原來(lái)的指針將重新指向新的位置;

3、堆中有非聚集索引,盡管插入和更新操作,不會(huì)發(fā)生頁(yè)分裂,但非聚集索引上仍然產(chǎn)生頁(yè)分裂。

總結(jié):無(wú)論有無(wú)索引,很多數(shù)據(jù)將保留在老頁(yè)面,其它將放入新頁(yè)面,并且新頁(yè)面可能被分配到任何可用的頁(yè),頻繁頁(yè)分裂,表會(huì)產(chǎn)生大量數(shù)據(jù)碎片,直接造成I/O 效率下降。

引出問(wèn)題:為什么數(shù)據(jù)庫(kù)對(duì)于varchar最大值設(shè)置為8000,而不是10000呢?

答:是由于數(shù)據(jù)頁(yè)大小最大為8K。

第二:針對(duì)上述索引可能造成的頁(yè)分頁(yè)的解決方案,填充因子。

創(chuàng)建索引時(shí),可以為索引指定一個(gè)填充因子,在索引的每個(gè)葉級(jí)頁(yè)面上保留一定百分比的空間,將來(lái)數(shù)據(jù)可以進(jìn)行擴(kuò)充和減少頁(yè)分裂。值從0到100的百分比數(shù)值,100 時(shí)表示將數(shù)據(jù)頁(yè)填滿。不對(duì)數(shù)據(jù)進(jìn)行更改時(shí)(例如只讀表中)才用此設(shè)置,實(shí)用價(jià)值不大。值越小則數(shù)據(jù)頁(yè)上的空閑空間越大,可以減少在索引增長(zhǎng)過(guò)程中進(jìn)行頁(yè)分裂,但需要占用更多的硬盤空間。填充因子也不能設(shè)置過(guò)小,過(guò)小會(huì)影響SQL的讀取性能,因?yàn)樘畛湟蜃釉斐蓴?shù)據(jù)頁(yè)的增多。一般我們公司設(shè)置的填充因子是80。

索引是否是一塵不變的?

隨著業(yè)務(wù)的變化,數(shù)據(jù)的變化,會(huì)發(fā)生有些索引的用處可能發(fā)生變化,例如:

1:原來(lái)主要靠用戶名搜索記錄,現(xiàn)在業(yè)務(wù)更改為按用戶所在城市搜索等等,此時(shí)我們需要即時(shí)變更表索引以適應(yīng)新業(yè)務(wù)的變化,即數(shù)據(jù)和使用模式發(fā)生了大幅度變化。

2:系統(tǒng)上線前不合理的索引,隨著數(shù)據(jù)的增加,缺點(diǎn)越來(lái)越明顯,此時(shí)需要調(diào)整索引。

3:隨著數(shù)據(jù)的增加,產(chǎn)生了越來(lái)越多的頁(yè)分裂,導(dǎo)致索引性能越來(lái)越低。

上面的幾種情況,我們就需要選擇重建索引來(lái)徹底解決問(wèn)題。

總結(jié)索引使用原則

1:不要索引數(shù)據(jù)量不大的表,對(duì)于小表來(lái)講,表掃描的成本并不高。

2:不要設(shè)置過(guò)多的索引,在沒(méi)有聚集索引的表中,最大可以設(shè)置249個(gè)非聚集索引,過(guò)多的索引首先會(huì)帶來(lái)更大的磁盤空間,而且在數(shù)據(jù)發(fā)生修改時(shí),對(duì)索引的維護(hù)是特別消耗性能的。

3:合理應(yīng)用復(fù)合索引,有某些情況下可以考慮創(chuàng)建包含所有輸出列的覆蓋索引。

4:對(duì)經(jīng)常使用范圍查詢的字段,可能考慮聚集索引。

5:避免對(duì)不常用的列,邏輯性列,大字段列創(chuàng)建索引。

原文鏈接:http://www.cnblogs.com/ASPNET2008/archive/2010/12/19/1910218.html

【編輯推薦】

  1. 數(shù)據(jù)庫(kù)索引,你該了解的幾件事
  2. 理解SQL Server 2008索引的存儲(chǔ)結(jié)構(gòu)
  3. 詳細(xì)講解SQL Server索引的性能問(wèn)題

 

責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2009-05-21 15:58:12

程序員工作經(jīng)驗(yàn)職場(chǎng)

2021-01-15 07:44:21

SQL注入攻擊黑客

2019-12-04 12:33:48

程序員技術(shù)設(shè)計(jì)

2019-07-25 07:42:35

程序員編程語(yǔ)言Python

2012-06-08 03:32:26

程序員電子郵件

2014-04-17 16:42:03

DevOps

2022-07-26 00:00:22

HTAP系統(tǒng)數(shù)據(jù)庫(kù)

2019-07-29 11:51:18

程序員設(shè)計(jì)軟件

2021-11-09 09:48:13

Logging python模塊

2019-11-18 10:06:44

程序員CDN靜態(tài)資源

2021-04-16 10:50:28

程序員技能開(kāi)發(fā)者

2014-11-28 10:31:07

Hybrid APP

2020-02-27 10:49:26

HTTPS網(wǎng)絡(luò)協(xié)議TCP

2019-09-16 08:40:42

2023-03-16 10:49:55

2019-11-06 09:52:01

JavaScript單線程非阻塞

2015-07-31 10:35:18

實(shí)時(shí)計(jì)算

2023-10-24 08:53:24

FutureTas并發(fā)編程

2022-03-14 07:53:27

ELTETL大數(shù)據(jù)

2017-10-18 22:01:12

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

丰满少妇久久久久久久| 国产日产欧美a一级在线| 国产97在线|亚洲| 成人免费xx| 成人午夜影院在线观看| 91午夜国产| 欧美高清一级片| 成人午夜在线播放| 日韩激情片免费| 日本午夜精品一区二区| 色多多视频在线观看| 伊人久久大香线蕉综合四虎小说| 亚洲国产精品久久久久婷婷884| 2025国产精品视频| 日本在线一二三区| 国产精品自在| 亚洲日本在线视频观看| 国内精品中文字幕| 人善交video高清| 久久悠悠精品综合网| 国产精品丝袜91| 69堂精品视频| 欧美成熟毛茸茸复古| 牛牛电影国产一区二区| 日韩高清在线观看| 亚洲黄色在线看| 精品毛片乱码1区2区3区| 久久国产精品99久久久久久丝袜| 国产精品一区在线看| 亚洲免费大片| 欧美日韩亚州综合| 神马影院一区二区| 亚洲国产福利| 成人永久免费视频| 午夜久久资源| 乱码第一页成人| 亚洲视频在线看| 国内自拍在线观看| 国产毛片一区二区三区| 欧美日韩精品免费| 日本久久久网站| 国产精选久久| 性久久久久久久久久久久| www.久久爱.cn| 亚洲综合影视| aaa国产一区| 国产美女被下药99| 18视频在线观看| 在线免费看av不卡| www.欧美日本| 天天精品视频| 亚洲国产精品va在看黑人| 农民人伦一区二区三区| 日韩激情啪啪| 欧美一区二区日韩一区二区| 国产经典久久久| 亚洲大片精品免费| 欧美高清精品3d| www.亚洲天堂网| 欧美精品偷拍| 色偷偷亚洲男人天堂| 在线看片你懂得| 国产suv精品一区二区883| www.av91| 国产婷婷色一区二区三区四区| 国产精品对白一区二区三区| av中文字幕电影在线看| 亚洲欧洲在线观看av| 欧美日韩一区二区视频在线| 日韩av中文字幕一区二区三区| 久久亚洲综合国产精品99麻豆精品福利| 秋霞在线观看av| 日产国产欧美视频一区精品| 一区二区三区四区免费视频| 欧美中文一区二区| 亚洲图片在区色| 国产黄色片在线播放| 91精品国产综合久久久久| 这里有精品可以观看| 久久99久久亚洲国产| 伊人影院在线视频| 亚洲欧美制服中文字幕| 国产精品超碰| 国产精品国产亚洲精品看不卡15 | 五月开心六月丁香综合色啪| 国产精品裸体一区二区三区| 久久99精品久久久久久国产越南| 日韩免费观看在线观看| 欧美成人一品| 欧美一级免费看| 欧美二区视频| 国产911在线观看| 亚洲欧美aⅴ...| 久久国产午夜精品理论片最新版本| 国内精品久久久久久久影视蜜臀 | 亚洲第一福利视频| 国产精品网在线观看| 成人av蜜桃| 久久综合丝袜日本网| 亚洲欧美久久久久一区二区三区| 日韩欧美一区免费| 欧美在线一区二区三区四| 欧美黄色a视频| 亚洲二区在线播放视频| 日韩视频一二区| 自拍偷拍亚洲在线| 黄色激情在线播放| 日韩美女一区二区三区| 超碰公开在线| 欧美日韩国产综合久久| 久久精品国产福利| 精品婷婷色一区二区三区蜜桃| 99精品全国免费观看视频软件| 正在播放91九色| 国产精品三上| 国产一区二区免费电影| 一区二区影视| 国产成人久久777777| 高清在线成人网| 精品一二三区视频| 日本精品视频一区二区| 在线资源av| 午夜精品久久久久久久99樱桃| 樱桃视频成人在线观看| 亚洲乱码国产乱码精品精| 精精国产xxxx视频在线野外| 91精品在线麻豆| 免费观看不卡av| 91精品久久久久久久| www.一区二区| 在线午夜影院| 成人在线视频网| 伊人影院久久| 色播亚洲婷婷| 色综合久久久久综合体| 99精品老司机免费视频| 337p亚洲精品色噜噜| 国产精品一在线观看| aa免费在线观看| 日韩一级二级三级精品视频| 丁香花在线影院| 亚洲男人天堂网| 亚洲大胆视频| 美臀av在线| 欧美美女喷水视频| 成人在线一区| 91xxxxx| 91chinesevideo永久地址| 亚洲成aⅴ人片久久青草影院| 男女啪啪免费视频网站| 精品亚洲国产视频| 麻豆精品久久| 日本欧美视频在线观看| 日韩国产欧美区| 精品一区二区日韩| av丝袜天堂网| 久久精品国产一区二区电影| 免费成人结看片| av一卡二卡| 国产精品av网站| 亚洲午夜久久久久久尤物| 国产污污在线观看| 国产欧美日韩中文| 精品欧美激情精品一区| av资源在线| 日韩第一页在线观看| 亚洲国产高清在线观看视频| 成人51免费| 国产成人精品视频免费看| 午夜精品一区在线观看| 久久视频在线| 国产av国片精品| 精品久久久香蕉免费精品视频| 日韩专区av| 视频一区二区三区在线观看| 精品盗摄一区二区三区| 国偷自产av一区二区三区| 99青春婷婷视频| 精品国产亚洲一区二区三区在线观看| 久久久久久一区二区| 小视频免费在线观看| 日韩中字在线观看| 国产综合在线视频| 一区二区三区中文免费| 高清在线视频不卡| 成人免费在线网| 日韩美女免费观看| 欧美军同video69gay| 国产精品88av| 国产在线黄色| 亚洲一区高清| 草民午夜欧美限制a级福利片| 夜夜爽夜夜爽精品视频| 福利精品在线| 国产伦精品一区二区三区在线| 91精品在线观看入口| 成人精品免费网站| 第一av在线| 别急慢慢来1978如如2| 亚洲r级在线观看|