10. 6 查詢優(yōu)化
1、 合理使用索引:索引是數(shù)據(jù)庫中重要的數(shù)據(jù)結(jié)構(gòu),根本目的就是為了提高查詢效率,使用原則如下 :
(1) 經(jīng)常在索引中作為條件被使用的列,應(yīng)為其建立索引;
(2) 頻繁進(jìn)行排序或分組(即進(jìn)行g(shù)roup by或order by操作)的列,應(yīng)為其建立索引;
(3) 一個列的值域很大時,應(yīng)為其建立索引;
(4) 如果待排列的列有多個,應(yīng)在這些列上建立復(fù)合索引;
(5) 可以使用系統(tǒng)工具來檢查索引的完整性,必要時進(jìn)行修復(fù)。
2、 避免或簡化排序:因為磁盤排序的開銷很大,當(dāng)能夠利用索引自動以適當(dāng)?shù)拇涡虍a(chǎn)生輸出時,優(yōu)化器就可以避免不必要的排序步驟,以下是一些影響因素:
(1) 由于現(xiàn)有的索引不足,導(dǎo)致排序時索引中不包括一個或幾個等待排序的列;
(2) group by或order by子句中列的次序與索引的次序不一樣;
(3) 排序的列來自不同的表。
為了避免不必要的排序,就要正確地增建索引,合理地合并數(shù)據(jù)庫表。如排序不可避免,那么應(yīng)試圖簡化它。
3、 消除對大型表行數(shù)據(jù)的順序存。涸谇短撞樵冎校瑢Ρ淼捻樞虼嫒Σ樵冃士赡墚a(chǎn)生致命的影響,解決方法就是對連接的列進(jìn)行索引。還可以使用并集來避免順序存取。
4、 避免相關(guān)子查詢:查詢嵌套層次越多,效率越低,應(yīng)盡量避免子查詢,如不可避免,那么要在子查詢中過濾盡量多的行;
5、 避免困難的正規(guī)表達(dá)式:避免含MATCHES和LINK關(guān)鍵字的正規(guī)表達(dá)式;
6、 使用臨時表加速查詢:把表的一個子集進(jìn)行排序并創(chuàng)建臨時表,有時能加速查詢;
7、 用排序來取代非順序磁盤存取;
8、 不充分的連接條件;
9、 存儲過程;
10、 不要隨意使用游標(biāo);
11、 事務(wù)處理。
![]() | ![]() .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 |
![]() | ![]() .. 定價:¥133 優(yōu)惠價:¥133.0 更多書籍 |