資料庫點滴積累 索引

2021-09-08 15:56:55 字數 889 閱讀 8876

索引

1、復合索引(where a and b)如果沒有對a和a做單一索引,查詢的時間為a;如果對a做單一索引,查詢時間為b;如果對b做單一索引,查詢時間為c;如果對a,b做復合索引,查詢時間為d,那麼時間的比較就應該是a>b=c>d;(比如spmsgreader_distribute中使用where inforid=@infoid and  userid=@userid,插入7000次的時候就明顯的看到效能了;(8秒:1:50秒)注意公升序和降序的區別?)

2、當高選擇性的非聚集索引達到5%的選擇性時,該索引時非常有用的

3、關於復合索引屬性列位置問題,應該把高選擇性的列放在坐左邊(以前就忽略了這個高選擇性的位置),那個通過ip和urlid的sarg中我們可以建立乙個ip和urlid的復合索引,通過業務來說,我們測試的時候可能是比較大,但是在生成環境中,應該是urlid的重複量會比較大,所以就ip放在復合索引的最左邊。

4、對easyurl跳轉功能中,需要通過輸入位址來查詢目標位址,這個資料庫查詢可以使用覆蓋索引,查詢的速度是最快的。

5、當返回乙個聚集索引列和乙個非聚集索引列,並且是使用非聚集索引屬性作為sarg,那麼這也是乙個索引覆蓋查詢,因為在非聚集索引包括聚集索引,所以直接在b-tree就返回了資料,不用查詢資料頁

6、在查詢select語句中使用where子句限制返回的行數和列數,避免表掃瞄,如果返回不必要的資料,浪費了伺服器的i/o資源,家中網路的負擔降低了效能。

7、對於長字元列的索引,我們可以使用雜湊索引,也就是checksum函式,具體用法可以看幫助文件;通常情況下我們對長字元列建立索引的,而且我們的業務邏輯中對長字元作為內容的搜尋也是不常見的,但是如果需要,可以考慮雜湊索引,有些同學可能會說為什麼不用全文索引呢?因為畢竟全文索引時要花費很多磁碟空間和io操作的。

**

資料庫點滴積累 索引

索引 1 復合索引 where a and b 如果沒有對a和a做單一索引,查詢的時間為a 如果對a做單一索引,查詢時間為b 如果對b做單一索引,查詢時間為c 如果對a,b做復合索引,查詢時間為d,那麼時間的比較就應該是a b c d 比如spmsgreader distribute中使用where...

資料庫點滴積累 游標

游標 1 盡量少用游標,如果不得不用,那就要看是否可以對邏輯進行整合,分出不同的情況,讓在一部分情況是使用insert select的方式來一次性插入 注意下例中的業務分析,這個是關鍵 2 如果儲存過程花費的時間比較長,而且無法避免使用游標,那我們就要分析系統的業務,看大部分的情況是走哪條路的,那我...

資料庫點滴積累 查詢

sql server查詢 1 查詢的時候應該盡量按照復合索引中的順序來做條件查詢 2 如果在程式中有for或者是freach,在儲存過程中又有if exist,那就要看是否可以再表中加入復合索引了,if not exists可以轉換為if exists來使用索引 3 在查詢盡量少使用 或者全表字段來...