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) 一個(gè)列的值域很大時(shí),應(yīng)為其建立索引;
(4) 如果待排列的列有多個(gè),應(yīng)在這些列上建立復(fù)合索引;
(5) 可以使用系統(tǒng)工具來檢查索引的完整性,必要時(shí)進(jìn)行修復(fù)。
2、 避免或簡化排序:因?yàn)榇疟P排序的開銷很大,當(dāng)能夠利用索引自動(dòng)以適當(dāng)?shù)拇涡虍a(chǎn)生輸出時(shí),優(yōu)化器就可以避免不必要的排序步驟,以下是一些影響因素:
(1) 由于現(xiàn)有的索引不足,導(dǎo)致排序時(shí)索引中不包括一個(gè)或幾個(gè)等待排序的列;
(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、 使用臨時(shí)表加速查詢:把表的一個(gè)子集進(jìn)行排序并創(chuàng)建臨時(shí)表,有時(shí)能加速查詢;
7、 用排序來取代非順序磁盤存取;
8、 不充分的連接條件;
9、 存儲過程;
10、 不要隨意使用游標(biāo);
11、 事務(wù)處理。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級考試試題及答案解析專題預(yù)告:名師解析2010年9月計(jì)算機(jī)等級考試試題答案
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |