最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

優(yōu)化 SQL Server 索引的小技巧

 更新時間:2012年08月09日 21:42:36   作者:  
SQL Server中有幾個可以讓你檢測、調(diào)整和優(yōu)化SQL Server性能的工具
在本文中,我將說明如何用SQL Server的工具來優(yōu)化數(shù)據(jù)庫索引的使用,本文還涉及到有關(guān)索引的一般性知識。
  
  關(guān)于索引的常識
  
  影響到數(shù)據(jù)庫性能的最大因素就是索引。由于該問題的復雜性,我只可能簡單的談談這個問題,不過關(guān)于這方面的問題,目前有好幾本不錯的書籍可供你參閱。我在這里只討論兩種SQL Server索引,即clustered索引和nonclustered索引。當考察建立什么類型的索引時,你應當考慮數(shù)據(jù)類型和保存這些數(shù)據(jù)的column。同樣,你也必須考慮數(shù)據(jù)庫可能用到的查詢類型以及使用的最為頻繁的查詢類型。
  
  索引的類型

  如果column保存了高度相關(guān)的數(shù)據(jù),并且常常被順序訪問時,最好使用clustered索引,這是因為如果使用clustered索引,SQL Server會在物理上按升序(默認)或者降序重排數(shù)據(jù)列,這樣就可以迅速的找到被查詢的數(shù)據(jù)。同樣,在搜尋控制在一定范圍內(nèi)的情況下,對這些column也最好使用clustered索引。這是因為由于物理上重排數(shù)據(jù),每個表格上只有一個clustered索引。
  
  與上面情況相反,如果columns包含的數(shù)據(jù)相關(guān)性較差,你可以使用nonculstered索引。你可以在一個表格中使用高達249個nonclustered索引——盡管我想象不出實際應用場合會用的上這么多索引。
  
  當表格使用主關(guān)鍵字(primary keys),默認情況下SQL Server會自動對包含該關(guān)鍵字的column(s)建立一個獨有的cluster索引。很顯然,對這些column(s)建立獨有索引意味著主關(guān)鍵字的唯一性。當建立外關(guān)鍵字(foreign key)關(guān)系時,如果你打算頻繁使用它,那么在外關(guān)鍵字cloumn上建立nonclustered索引不失為一個好的方法。如果表格有clustered索引,那么它用一個鏈表來維護數(shù)據(jù)頁之間的關(guān)系。相反,如果表格沒有clustered索引,SQL Server將在一個堆棧中保存數(shù)據(jù)頁。
  
  數(shù)據(jù)頁

  當索引建立起來的時候,SQLServer就建立數(shù)據(jù)頁(datapage),數(shù)據(jù)頁是用以加速搜索的指針。當索引建立起來的時候,其對應的填充因子也即被設(shè)置。設(shè)置填充因子的目的是為了指示該索引中數(shù)據(jù)頁的百分比。隨著時間的推移,數(shù)據(jù)庫的更新會消耗掉已有的空閑空間,這就會導致頁被拆分。頁拆分的后果是降低了索引的性能,因而使用該索引的查詢會導致數(shù)據(jù)存儲的支離破碎。當建立一個索引時,該索引的填充因子即被設(shè)置好了,因此填充因子不能動態(tài)維護。
  
  為了更新數(shù)據(jù)頁中的填充因子,我們可以停止舊有索引并重建索引,并重新設(shè)置填充因子(注意:這將影響到當前數(shù)據(jù)庫的運行,在重要場合請謹慎使用)。DBCC INDEXDEFRAG和DBCC DBREINDEX是清除clustered和nonculstered索引碎片的兩個命令。INDEXDEFRAG是一種在線操作(也就是說,它不會阻塞其它表格動作,如查詢),而DBREINDEX則在物理上重建索引。在絕大多數(shù)情況下,重建索引可以更好的消除碎片,但是這個優(yōu)點是以阻塞當前發(fā)生在該索引所在表格上其它動作為代價換取來得。當出現(xiàn)較大的碎片索引時,INDEXDEFRAG會花上一段比較長的時間,這是因為該命令的運行是基于小的交互塊(transactional block)。
  
  填充因子

  當你執(zhí)行上述措施中的任何一個,數(shù)據(jù)庫引擎可以更有效的返回編入索引的數(shù)據(jù)。關(guān)于填充因子(fillfactor)話題已經(jīng)超出了本文的范疇,不過我還是提醒你需要注意那些打算使用填充因子建立索引的表格。
  
  在執(zhí)行查詢時,SQL Server動態(tài)選擇使用哪個索引。為此,SQL Server根據(jù)每個索引上分布在該關(guān)鍵字上的統(tǒng)計量來決定使用哪個索引。值得注意的是,經(jīng)過日常的數(shù)據(jù)庫活動(如插入、刪除和更新表格),SQL Server用到的這些統(tǒng)計量可能已經(jīng)“過期”了,需要更新。你可以通過執(zhí)行DBCC SHOWCONTIG來查看統(tǒng)計量的狀態(tài)。當你認為統(tǒng)計量已經(jīng)“過期”時,你可以執(zhí)行該表格的UPDATE STATISTICS命令,這樣SQL Server就刷新了關(guān)于該索引的信息了。
  
  建立數(shù)據(jù)庫維護計劃

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

相關(guān)文章

  • MS SQL Server2014鏈接到MS SQL Server 2000的解決方案及問題處理

    MS SQL Server2014鏈接到MS SQL Server 2000的解決方案及問題處理

    在大數(shù)據(jù)中,我們經(jīng)常需要用到分布式數(shù)據(jù),那么在SqlServer中,我們?nèi)绾蝸韺崿F(xiàn)呢,答案就是創(chuàng)建鏈接服務器!同版本的SqlServer之間的操作網(wǎng)上有很多,今天我們來探討下不同版本SqlServer之間的鏈接問題。
    2014-07-07
  • mybatis的動態(tài)sql詳解(精)

    mybatis的動態(tài)sql詳解(精)

    MyBatis的動態(tài)SQL是基于OGNL表達式的,它可以幫助我們方便的在SQL語句中實現(xiàn)某些邏輯,本文詳解mybatis的動態(tài)sql,需要的朋友可以參考下
    2015-08-08
  • MySql 安裝時的1045錯誤

    MySql 安裝時的1045錯誤

    MySql安裝到最后一步的時候,出現(xiàn)1045的錯誤有兩種解決辦法。
    2009-07-07
  • 淺談Transact-SQL

    淺談Transact-SQL

    Transact-SQL 是使用 SQL Server 的核心。 與 SQL Server 實例通信的所有應用程序都通過將 Transact-SQL 語句發(fā)送到服務器進行通信,而不管應用程序的用戶界面如何。
    2014-08-08
  • SQL Server子查詢的深入理解

    SQL Server子查詢的深入理解

    這篇文章主要給大家介紹了關(guān)于SQL Server子查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • SQL?Server系統(tǒng)函數(shù)介紹

    SQL?Server系統(tǒng)函數(shù)介紹

    這篇文章介紹了SQL?Server中的系統(tǒng)函數(shù),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • SQL?Server導入.mdf方法的錯誤處理方法

    SQL?Server導入.mdf方法的錯誤處理方法

    導入mdf文件和ldf文件到數(shù)據(jù)庫是網(wǎng)站搬家或者是初學者學習源碼是必要的一步,下面這篇文章主要給大家介紹了關(guān)于SQL?Server導入.mdf方法的錯誤處理方法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • SQLServer Top語句參數(shù)化方法

    SQLServer Top語句參數(shù)化方法

    在T-Sql中,一般top數(shù)據(jù)不確定的情況下,都是拼sql,這樣無論是效率還是可讀性都不好。應該使用下面參數(shù)化Top方式
    2009-07-07
  • SQL查詢中in和exists的區(qū)別分析

    SQL查詢中in和exists的區(qū)別分析

    這篇文章分析了SQL查詢中in和exists的區(qū)別,有需要的朋友可以參考一下
    2013-10-10
  • SQL SELECT 語句的表連接

    SQL SELECT 語句的表連接

    為了從兩個或多個表中選出數(shù)據(jù),我們一般使用表連接來實現(xiàn)這個功能。
    2010-09-09

最新評論

自贡市| 赤峰市| 尖扎县| 洞头县| 尖扎县| 梁山县| 大连市| 白玉县| 襄城县| 龙陵县| 呼图壁县| 华宁县| 永新县| 乐业县| 紫云| 象山县| 新郑市| 项城市| 烟台市| 柞水县| 东源县| 濮阳市| 临洮县| 子长县| 叶城县| 萨嘎县| 新竹县| 富平县| 湖南省| 枣庄市| 九龙城区| 安溪县| 西乌珠穆沁旗| 彰化市| 莒南县| 庆云县| 长顺县| 章丘市| 都昌县| 怀安县| 嵊州市|