成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server索引如何使用時正確的?

數據庫 SQL Server
本文主要向大家描述的是SQL Server索引的具體使用標準(Index Usage Criteria),下面就是文章的主要內容的詳細描述。

此文章主要向大家探討的是SQL Server索引的具體使用標準(Index Usage Criteria),在實際操作中我們大家為了其更為有效的決定創建哪些合適的SQL Server數據庫索引,你必須決定這些索引實際中是否被SQL Server使用過。

如果一個索引不能被有效使用,在修改數據時,那只會浪費空間和增加不必要的負擔。

需要記住的主要標準是:如果至少是SQL Server索引的***列沒有被包含在一個有效的搜索參數(search argument SARG)或join子句中,那么SQL Server 就不會使用索引進行更有效地書簽查找(bookmark lookup)。為創建復合索引,選擇列的順序時牢記住這一點,想想下面的在store表中的索引:

Create index nc1_stores on stores (city, state, zip)

下面的每一個查詢將會用到索引,因為它們包含了SQL Server索引的***列city,其為一個SARG:

Sql代碼

  1. select stor_name from stores   
  2. where city = 'Frederick'   
  3. and state = 'MD'   
  4. and zip = '21702'   
  5. select stor_name from stores   
  6. where city = 'Frederick' 
  7. and state = 'MD' 
  8. and zip = '21702' 
  9. Sql代碼   
  10. select stor_name from stores   
  11. where city = 'Frederick'   
  12. and state = 'MD'   
  13. select stor_name from stores  
  14. where city = 'Frederick' 
  15. and state = 'MD' 
  16. Sql代碼   
  17. select stor_name from stores   
  18. where city = 'Frederick'   
  19. and zip = '21702'   
  20. select stor_name from stores  
  21. where city = 'Frederick' 
  22. and zip = '21702' 

然而,下面的查詢不會用到SQL Server索引而進行書簽查找,因為它們沒指定city列為一個SARG:

  1. Sql代碼   
  2. select stor_name from stores   
  3. where state = 'MD'   
  4. and zip = '21702'   
  5. select stor_name from stores   
  6. where state = 'MD' 
  7. and zip = '21702' 
  8. Sql代碼   
  9. select stor_name from stores   
  10. where zip = '21702'   
  11. select stor_name from stores  
  12. where zip = '21702' 
  13.  

引用

注釋:

對于前面提到的***兩個查詢,如果你顯示執行計劃(execution plan)信息,你可能發現,查詢實際上使用了nc1_store索引來檢索了結果集(resultset)。如果再仔細看,你會發現查詢沒有使用索引最有效地方式——它使用了索引掃描(index scan),而不是索引查找(index seek)。

有關查詢存取方法(query aceess method)的更多信息,可參見第35章“Understanding Query Optimization”,在該章中將講述索引查找。

在索引查找(Index seek)中,SQL Server 沿著索引樹(index tree)從根級(root level)向下進行索引鍵值匹配搜索,直到搜索到指定的行,然后使用存儲在索引鍵值中的書簽值(bookmark value)直接從數據頁中檢索匹配的數據行(這個書簽值可以是行標識符(RID),或者聚集索引的鍵值)。

對一個索引掃描(Index scan),SQL Server搜索索引樹中所有葉級(leaf level)中的行來進行可能匹配的查找。如果發現滿足匹配的行,然后利用書簽檢索數據行。

盡管兩者都使用了索引,從I/O代價角度來講,索引掃描比SQL Server索引查找的代價要高,但比表掃描(Table scan)要略微要小些。然而,本章學習設計索引的目的是為了使用索引查找,所以當我談到使用索引時,指的是索引查找。

為了得到可能列的書簽查詢,你可能想到的一個容易的方法是在表中所有列上都創建索引,這樣任何類型的查詢都可以使用索引了。這種策略可能在某些支持ad hoc queries(隨意的查詢)的只讀的DSS(決策支持系統)環境下是合適的,但是這樣也存在問題,因為仍然會造成有許多索引不被使用。

正如你在本章的Index selection節看到的,不會僅僅因為在某列創建了索引,優化器就總會使用該列的索引,例如,當該列的選擇性不夠時(not selective enough),就不會使用該列的索引。另外,在一張大表(large table)上創建太多索引會占據數據庫中的大量空間,增加了備份的要求時間。前面也提到過,在一個OLTP(在線聯機處理)系統上,太多的索引會給數據的插入、修改、刪除操作帶來大量的額外負擔,造成性能上的不利影響。

引用

建議:(每張表4-5個索引)

我曾經常犯的一個設計錯誤是在OLTP環境下定義了太多的索引。許多情況下,有些索引是冗余的或者是優化器在處理查詢時就根本沒有考慮。結果,這些索引導致空間的浪費和增加了修改數據時的不必要負擔。

在這一點上有一個案例,有個客戶在一個表上創建了8個索引,其中4個索引都是在同一列上,該列的鍵值唯一(unique key),在索引中該列都是***個索引列。對表的查詢和修改操作,該列都包含在where 子句中。結果只有4個的其中1個SQL Server索引曾被用到過。

希望在本章結束后,你將會理解為什么所有這些索引不是必須的,并且能重新認識和決定在哪些列上創建索引將會收益,而哪些列上應避免創建索引。

【編輯推薦】

  1. SQL Server磁帶備份設備的性能優化過程
  2. SQL Server 2005商業智能功能淺析
  3. 優化SQL Server數據庫的經驗大盤點
  4. 創建SQL Server數據庫更是實在
  5. SQL Server創建表所要用到的代碼
責任編輯:佚名 來源: 中信出版社
相關推薦

2010-07-19 14:48:27

SQL Server索

2010-07-21 13:17:47

SQL Server表

2019-11-14 16:23:07

MySQL索引數據庫

2010-07-20 12:35:33

SQL Server索

2010-06-29 17:52:02

SQL Server嵌

2010-07-07 13:39:33

SQL Server監

2010-07-15 13:54:47

2010-07-20 08:56:37

SQL Server鎖

2010-07-08 16:52:31

SQL Server索

2010-07-19 11:35:05

2010-07-07 10:31:43

SQL Server數

2010-07-09 10:36:22

SQL Server

2017-08-30 17:47:35

MySql索引

2022-09-22 19:09:11

SQL Server數據庫

2022-09-22 22:51:32

Master數據庫

2011-03-18 14:54:52

SQL Server索引結構

2011-05-20 10:52:50

SQL Server 索引

2010-06-18 13:14:26

SQL Server

2010-07-07 09:47:04

SQL Server索

2010-07-01 15:02:29

SQL Server數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本一本视频 | 国产精品美女久久久久久久久久久 | ww亚洲ww亚在线观看 | 国产精品自拍视频 | 丝袜美腿av | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 亚洲一区二区av | 亚洲欧美激情精品一区二区 | 国产精品一二区 | 中国xxxx性xxxx产国 | 欧美日韩免费在线 | 超碰电影 | 久久中文字幕在线 | 操久久| 国产视频一区在线 | 欧美在线观看一区 | 国产日韩欧美一区二区在线播放 | www.久草.com | 久久久精品一区二区三区 | 91正在播放 | 91在线色视频| 国产精品美女久久久久aⅴ国产馆 | 欧美视频区 | 精品美女 | 亚洲国产高清在线观看 | 精品视频免费 | 国产精品毛片无码 | 免费人成在线观看网站 | 999久久久 | 黄色在线观看 | av免费网 | h片在线观看网站 | 亚洲视频免费在线播放 | 成人av电影在线观看 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 亚洲精品一区中文字幕乱码 | 91在线精品秘密一区二区 | 美女爽到呻吟久久久久 | 成人精品一区二区三区 | 蜜桃免费一区二区三区 | 亚洲成人中文字幕 |