日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQLServer數(shù)據(jù)庫中優(yōu)化索引的妙招

我們今天主要向大家描述的是在SQL Server數(shù)據(jù)庫中對索引進(jìn)行優(yōu)化的一些小妙招,同時(shí)本文也有對索引的常識(shí)的描述,即,我們大家都知道影響到數(shù)據(jù)庫性能的***因素就是索引。由于該問題的復(fù)雜性,我只可能簡單的談?wù)勥@個(gè)問題。

成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)子洲,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

不過關(guān)于這方面的問題,目前有好幾本不錯(cuò)的書籍可供你參閱。我在這里只討論兩種SQL Server數(shù)據(jù)庫索引,即clustered索引和nonclustered索引。當(dāng)考察建立什么類型的索引時(shí),你應(yīng)當(dāng)考慮數(shù)據(jù)類型和保存這些數(shù)據(jù)的column。同樣,你也必須考慮數(shù)據(jù)庫可能用到的查詢類型以及使用的最為頻繁的查詢類型。

索引的類型

如果column保存了高度相關(guān)的數(shù)據(jù),并且常常被順序訪問時(shí),***使用clustered索引,這是因?yàn)槿绻褂胏lustered索引,SQL Server會(huì)在物理上按升序(默認(rèn))或者降序重排數(shù)據(jù)列,這樣就可以迅速的找到被查詢的數(shù)據(jù)。同樣,在搜尋控制在一定范圍內(nèi)的情況下,對這些column也***使用clustered索引。這是因?yàn)橛捎谖锢砩现嘏艛?shù)據(jù),每個(gè)表格上只有一個(gè)clustered索引。

與上面情況相反,如果columns包含的數(shù)據(jù)相關(guān)性較差,你可以使用nonculstered索引。你可以在一個(gè)表格中使用高達(dá)249個(gè)nonclustered索引——盡管我想象不出實(shí)際應(yīng)用場合會(huì)用的上這么多索引。

當(dāng)表格使用主關(guān)鍵字(primary keys),默認(rèn)情況下SQL Server數(shù)據(jù)庫會(huì)自動(dòng)對包含該關(guān)鍵字的column(s)建立一個(gè)獨(dú)有的cluster索引。很顯然,對這些column(s)建立獨(dú)有索引意味著主關(guān)鍵字的唯一性。當(dāng)建立外關(guān)鍵字(foreign key)關(guān)系時(shí),如果你打算頻繁使用它,那么在外關(guān)鍵字cloumn上建立nonclustered索引不失為一個(gè)好的方法。

如果表格有clustered索引,那么它用一個(gè)鏈表來維護(hù)數(shù)據(jù)頁之間的關(guān)系。相反,如果表格沒有clustered索引,SQL Server數(shù)據(jù)庫將在一個(gè)堆棧中保存數(shù)據(jù)頁。

數(shù)據(jù)頁

當(dāng)索引建立起來的時(shí)候,SQLServer就建立數(shù)據(jù)頁(datapage),數(shù)據(jù)頁是用以加速搜索的指針。當(dāng)索引建立起來的時(shí)候,其對應(yīng)的填充因子也即被設(shè)置。設(shè)置填充因子的目的是為了指示該索引中數(shù)據(jù)頁的百分比。

隨著時(shí)間的推移,數(shù)據(jù)庫的更新會(huì)消耗掉已有的空閑空間,這就會(huì)導(dǎo)致頁被拆分。頁拆分的后果是降低了索引的性能,因而使用該索引的查詢會(huì)導(dǎo)致數(shù)據(jù)存儲(chǔ)的支離破碎。當(dāng)建立一個(gè)索引時(shí),該索引的填充因子即被設(shè)置好了,因此填充因子不能動(dòng)態(tài)維護(hù)。

為了更新數(shù)據(jù)頁中的填充因子,我們可以停止舊有索引并重建索引,并重新設(shè)置填充因子(注意:這將影響到當(dāng)前數(shù)據(jù)庫的運(yùn)行,在重要場合請謹(jǐn)慎使用)。DBCC INDEXDEFRAG和DBCC DBREINDEX是清除clustered和nonculstered索引碎片的兩個(gè)命令。

INDEXDEFRAG是一種在線操作(也就是說,它不會(huì)阻塞其它表格動(dòng)作,如查詢),而DBREINDEX則在物理上重建索引。在絕大多數(shù)情況下,重建索引可以更好的消除碎片,但是這個(gè)優(yōu)點(diǎn)是以阻塞當(dāng)前發(fā)生在該索引所在表格上其它動(dòng)作為代價(jià)換取來得。當(dāng)出現(xiàn)較大的碎片索引時(shí),INDEXDEFRAG會(huì)花上一段比較長的時(shí)間,這是因?yàn)樵撁畹倪\(yùn)行是基于小的交互塊(transactional block)。

填充因子

當(dāng)你執(zhí)行上述措施中的任何一個(gè),數(shù)據(jù)庫引擎可以更有效的返回編入索引的數(shù)據(jù)。關(guān)于填充因子(fillfactor)話題已經(jīng)超出了本文的范疇,不過我還是提醒你需要注意那些打算使用填充因子建立索引的表格。

在執(zhí)行查詢時(shí),SQL Server動(dòng)態(tài)選擇使用哪個(gè)索引。為此,SQL Server數(shù)據(jù)庫根據(jù)每個(gè)索引上分布在該關(guān)鍵字上的統(tǒng)計(jì)量來決定使用哪個(gè)索引。值得注意的是,經(jīng)過日常的數(shù)據(jù)庫活動(dòng)(如插入、刪除和更新表格),SQL Server用到的這些統(tǒng)計(jì)量可能已經(jīng)“過期”了,需要更新。

你可以通過執(zhí)行DBCC SHOWCONTIG來查看統(tǒng)計(jì)量的狀態(tài)。當(dāng)你認(rèn)為統(tǒng)計(jì)量已經(jīng)“過期”時(shí),你可以執(zhí)行該表格的UPDATE STATISTICS命令,這樣SQL Server就刷新了關(guān)于該索引的信息了。

建立數(shù)據(jù)庫維護(hù)計(jì)劃

SQL Server數(shù)據(jù)庫提供了一種簡化并自動(dòng)維護(hù)數(shù)據(jù)庫的工具。這個(gè)稱之為數(shù)據(jù)庫維護(hù)計(jì)劃向?qū)В―atabase Maintenance Plan Wizard ,DMPW)的工具也包括了對索引的優(yōu)化。如果你運(yùn)行這個(gè)向?qū)?,你?huì)看到關(guān)于數(shù)據(jù)庫中關(guān)于索引的統(tǒng)計(jì)量,這些統(tǒng)計(jì)量作為日志工作并定時(shí)更新,這樣就減輕了手工重建索引所帶來的工作量。

如果你不想自動(dòng)定期刷新索引統(tǒng)計(jì)量,你還可以在DMPW中選擇重新組織數(shù)據(jù)和數(shù)據(jù)頁,這將停止舊有索引并按特定的填充因子重建索引。


當(dāng)前題目:SQLServer數(shù)據(jù)庫中優(yōu)化索引的妙招
分享網(wǎng)址:http://m.5511xx.com/article/djhdshp.html