激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

優(yōu)化SQL Server索引的5個(gè)小技巧

時(shí)間:2024-08-18 06:55:31 SQL 我要投稿
  • 相關(guān)推薦

優(yōu)化SQL Server索引的5個(gè)小技巧

  SQL Server中有幾個(gè)可以讓你檢測、調整和優(yōu)化SQL Server性能的工具。在本文中,我將說(shuō)明如何用SQL Server的工具來(lái)優(yōu)化數據庫索引的使用,本文還涉及到有關(guān)索引的一般性知識。

  關(guān)于索引的常識

  影響到數據庫性能的最大因素就是索引。由于該問(wèn)題的復雜性,我只可能簡(jiǎn)單的談?wù)勥@個(gè)問(wèn)題,不過(guò)關(guān)于這方面的問(wèn)題,目前有好幾本不錯的書(shū)籍可供你參閱。我在這里只討論兩種SQL Server索引,即clustered索引和nonclustered索引。當考察建立什么類(lèi)型的索引時(shí),你應當考慮數據類(lèi)型和保存這些數據的column。同樣,你也必須考慮數據庫可能用到的查詢(xún)類(lèi)型以及使用的最為頻繁的查詢(xún)類(lèi)型。

  索引的類(lèi)型

  如果column保存了高度相關(guān)的數據,并且常常被順序訪(fǎng)問(wèn)時(shí),最好使用clustered索引,這是因為如果使用clustered索引,SQL Server會(huì )在物理上按升序(默認)或者降序重排數據列,這樣就可以迅速的找到被查詢(xún)的數據。同樣,在搜尋控制在一定范圍內的情況下,對這些column也最好使用clustered索引。這是因為由于物理上重排數據,每個(gè)表格上只有一個(gè)clustered索引。

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

  當表格使用主關(guān)鍵字(primary keys),默認情況下SQL Server會(huì )自動(dòng)對包含該關(guān)鍵字的column(s)建立一個(gè)獨有的cluster索引。很顯然,對這些column(s)建立獨有索引意味著(zhù)主關(guān)鍵字的唯一性。當建立外關(guān)鍵字(foreign key)關(guān)系時(shí),如果你打算頻繁使用它,那么在外關(guān)鍵字cloumn上建立nonclustered索引不失為一個(gè)好的方法。如果表格有clustered索引,那么它用一個(gè)鏈表來(lái)維護數據頁(yè)之間的關(guān)系。相反,如果表格沒(méi)有clustered索引,SQL Server將在一個(gè)堆棧中保存數據頁(yè)。

  數據頁(yè)

  當索引建立起來(lái)的時(shí)候,SQLServer就建立數據頁(yè)(datapage),數據頁(yè)是用以加速搜索的指針。當索引建立起來(lái)的時(shí)候,其對應的填充因子也即被設置。設置填充因子的目的是為了指示該索引中數據頁(yè)的百分比。隨著(zhù)時(shí)間的推移,數據庫的更新會(huì )消耗掉已有的空閑空間,這就會(huì )導致頁(yè)被拆分。頁(yè)拆分的后果是降低了索引的性能,因而使用該索引的查詢(xún)會(huì )導致數據存儲的支離破碎。當建立一個(gè)索引時(shí),該索引的填充因子即被設置好了,因此填充因子不能動(dòng)態(tài)維護。

  為了更新數據頁(yè)中的填充因子,我們可以停止舊有索引并重建索引,并重新設置填充因子(注意:這將影響到當前數據庫的運行,在重要場(chǎng)合請謹慎使用)。DBCC INDEXDEFRAG和DBCC DBREINDEX是清除clustered和nonculstered索引碎片的兩個(gè)命令。INDEXDEFRAG是一種在線(xiàn)操作(也就是說(shuō),它不會(huì )阻塞其它表格動(dòng)作,如查詢(xún)),而DBREINDEX則在物理上重建索引。在絕大多數情況下,重建索引可以更好的消除碎片,但是這個(gè)優(yōu)點(diǎn)是以阻塞當前發(fā)生在該索引所在表格上其它動(dòng)作為代價(jià)換取來(lái)得。當出現較大的碎片索引時(shí),INDEXDEFRAG會(huì )花上一段比較長(cháng)的時(shí)間,這是因為該命令的運行是基于小的交互塊(transactional block)。

  填充因子

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

  在執行查詢(xún)時(shí),SQL Server動(dòng)態(tài)選擇使用哪個(gè)索引。為此,SQL Server根據每個(gè)索引上分布在該關(guān)鍵字上的統計量來(lái)決定使用哪個(gè)索引。值得注意的是,經(jīng)過(guò)日常的數據庫活動(dòng)(如插入、刪除和更新表格),SQL Server用到的這些統計量可能已經(jīng)“過(guò)期了,需要更新。你可以通過(guò)執行DBCC SHOWCONTIG來(lái)查看統計量的狀態(tài)。當你認為統計量已經(jīng)“過(guò)期時(shí),你可以執行該表格的UPDATE STATISTICS命令,這樣SQL Server就刷新了關(guān)于該索引的信息了。

  建立數據庫維護計劃

  SQL Server提供了一種簡(jiǎn)化并自動(dòng)維護數據庫的工具。這個(gè)稱(chēng)之為數據庫維護計劃向導(Database Maintenance Plan Wizard ,DMPW)的工具也包括了對索引的優(yōu)化。如果你運行這個(gè)向導,你會(huì )看到關(guān)于數據庫中關(guān)于索引的統計量,這些統計量作為日志工作并定時(shí)更新,這樣就減輕了手工重建索引所帶來(lái)的工作量。如果你不想自動(dòng)定期刷新索引統計量,你還可以在DMPW中選擇重新組織數據和數據頁(yè),這將停止舊有索引并按特定的填充因子重建索引。

【優(yōu)化SQL Server索引的5個(gè)小技巧】相關(guān)文章:

SQL Server常用數據類(lèi)型06-18

SQL優(yōu)化大全09-09

Sql Server、Access數據排名的實(shí)現方法07-09

如何更改SQL Server默認的1433端口05-19

如何快速掌握SQL Server中的日志轉移08-04

有關(guān)清除SQL Server日志的兩種方法07-20

網(wǎng)站優(yōu)化時(shí)的小技巧及細節07-07

計算機搜索引擎小技巧07-23

HTML與搜索引擎優(yōu)化10-28

新手對搜索引擎優(yōu)化seo誤區解讀07-28

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频