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

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
DB2索引創(chuàng)建原則

DB2索引創(chuàng)建都應該哪些原則呢?這是很多人都提到的問題,下面就為您詳細介紹DB2索引創(chuàng)建原則,供您參考學習。

創(chuàng)新互聯(lián)專注于企業(yè)成都全網營銷推廣、網站重做改版、西工網站定制設計、自適應品牌網站建設、H5建站、商城開發(fā)、集團公司官網建設、外貿網站建設、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為西工等各大城市提供網站開發(fā)制作服務。

DB2索引實現(xiàn)是一個B+樹,通過索引可以實現(xiàn)快速查詢,避免全表掃描以此來減少IO操作。

索引是對表數(shù)據(jù)的一種抽象,通過抽取有限數(shù)據(jù),對數(shù)據(jù)的分布進行計算,以此來完成對數(shù)據(jù)的快速檢索。

索引創(chuàng)建語句

 
 
 
  1. CREATE INDEX  ON  (

創(chuàng)建索引需要注意的地方:

索引應該用來提高查詢速度,但是會對更新和刪除操作帶來負面影響,因為要同步更新索引。所以索引應該創(chuàng)建到更新、刪除相對比讀取少的表上。

索引需要獨立的空間進行存儲和管理。索引是需要磁盤空間來存儲。所以避免重復創(chuàng)建冗余索引。如下:

 
 
 
  1. “CREATE TABLE TEST_IDX (COL1 INT NOT NULL, COL2 INT NOT NULL, COL3 IN NOT NULL)”“CREATE INDEX TEST_IDX_IDX1 ON TEST_IDX (COL1, COL2, COL3)” 

已經有索引TEST_IDX_IDX1在三個列上,在創(chuàng)建”CREATE INDEX TEST_IDX_IDX2 ON TEST_IDX (COL1, COL2)”,這樣的索引一般沒有什么作用。

索引用來避免表掃描。通過索引對大量數(shù)據(jù)抽取有限部分,形成一個相對少量的有序數(shù)據(jù)結構,通過對有序數(shù)據(jù)結構的查找可以快速想要查找的數(shù)據(jù)。所以索引適合建立在數(shù)據(jù)量比較大的表上,而且該表上的查詢經常是根據(jù)條件查詢部分數(shù)據(jù)。比如一些系統(tǒng)基礎表,如SYSTEM表,這些表數(shù)據(jù)量小,而且經常是查詢全部數(shù)據(jù),所以這些表上建立索引對性能的影響不是很大,完全可以避免,以免對管理造成影響。

創(chuàng)建索引的目的還有一個就是保證數(shù)據(jù)唯一性,可以利用”CREATE UNIQUE INDEX ON ()”,來完成。

主鍵會隱式創(chuàng)建索引,所以請不要在主鍵上創(chuàng)建索引浪費空間。

盡量減少索引的創(chuàng)建。DB2路徑訪問優(yōu)化器會根據(jù)表中所提供的索引來完成盡可能多的訪問路徑的成本估計。創(chuàng)建過多的索引意味著DB2優(yōu)化器生成更多的訪問路徑,完成更多的訪問計劃成本估算,這會增加SQL語句編譯時間。

創(chuàng)建唯一索引可以避免排序。因為索引是有序數(shù)據(jù)結構,在進行掃描時,DB2會默認按照順序輸出結果,而不是按照插入先后。通過創(chuàng)建唯一索引可以避免排序,提高查詢性能。

具有大量重復數(shù)據(jù)的列上不要創(chuàng)建索引。在大量重復的列上創(chuàng)建索引沒有任何意義。如下數(shù)據(jù)結構:表中字段col1有大量重復數(shù)據(jù),其中的數(shù)據(jù)分布是按照90%的Y,和10%的N來分布。這樣的列上創(chuàng)建索引沒有任何意義。在查詢條件為col1=‘Y’時,該表的索引掃描和表掃描沒有特大差異。根據(jù)實踐經驗,列上的數(shù)據(jù)分布應該均勻,并且抽密度不能大于5 ‰。

創(chuàng)建如下表:

 
 
 
  1. “CREATE TABLE TEST1 (NO INT NOT NULL, NAME CHAR(5))”  
  2.  
  3. “CREATE INDEX TEST1_IDX_1 ON TEST1 (NO)”  
  4.  
  5. “INSERT INTO TEST1 SELECT ROW_NUMBER() OVER(), CHR(INT(RAND()*75+48))||CHR(INT(RAND()*75+48))||CHR(INT(RAND()*75+48)) FROM SYSCAT.COLUMNS T1 JOIN SYSCAT.COLUMNS T2 ON T1.COLNAME!=T2.COLNAME FETCH FIRST 100 ROWS ONLY“  
  6.  
  7. “SELECT * FROM TEST1 WHERE NO = 50”  

以上就是DB2索引創(chuàng)建原則介紹。

【編輯推薦】

DB2循環(huán)查詢的實現(xiàn)方法

DB2分區(qū)數(shù)據(jù)庫的前滾操作

DB2分區(qū)數(shù)據(jù)庫備份的實現(xiàn)方法

DB2目錄結構詳解

DB2批量執(zhí)行SQL腳本的實現(xiàn)


當前文章:DB2索引創(chuàng)建原則
網頁鏈接:http://www.5511xx.com/article/dhdeghe.html