楊秀榮
摘要:基于查詢優(yōu)化為數(shù)據(jù)庫管理系統(tǒng)規(guī)劃與任務(wù)完成所應(yīng)用的一項(xiàng)關(guān)鍵技術(shù),并且直接關(guān)系數(shù)據(jù)庫實(shí)用功能這一實(shí)況,提出了科學(xué)應(yīng)用各類數(shù)據(jù)庫查詢優(yōu)化技術(shù)的建議。本文在對數(shù)據(jù)庫查詢優(yōu)化目標(biāo),以及其涉及的各類因素進(jìn)行概述的基礎(chǔ)上,對各種查詢優(yōu)化技術(shù)應(yīng)用要點(diǎn)進(jìn)行探究。
關(guān)鍵詞:數(shù)據(jù)庫;查詢優(yōu)化;索引;查詢技術(shù)
中圖分類號:TP311.13 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2017)07-0225-01
在關(guān)系數(shù)據(jù)庫中,查詢?yōu)榛A(chǔ)型、常用型的操作。數(shù)據(jù)庫的查詢多數(shù)以查詢語句呈現(xiàn)出來,查詢效率為檢測數(shù)據(jù)庫系統(tǒng)功能的重要標(biāo)桿之一。數(shù)據(jù)庫管理系統(tǒng)自帶查詢與更新方法的功能,致使關(guān)系數(shù)據(jù)庫回應(yīng)時間緩慢的問題衍生出來,所以積極對查詢優(yōu)化問題進(jìn)行探究是極為必要的。本文做出如下論述內(nèi)容。
1 查詢優(yōu)化的目標(biāo)
對查詢代價有整體性認(rèn)識是基礎(chǔ)。查詢代價實(shí)質(zhì)上就是指處理查詢環(huán)節(jié)中花費(fèi)的時間,大體上涵蓋了以下幾個成分:一是訪問輔助存儲器的代價(I/0代價),數(shù)據(jù)庫通常以物理塊為單位從磁盤中獲得,每個物理塊通常涵蓋多條錄入信息;二是計算代價(CPU代價);三若是分布式數(shù)據(jù)庫,其內(nèi)還涵蓋通信代價。
I/0代價和CPU代價是處理任何類型查詢一定要付出的代價?;贑PU的速度比磁盤讀寫更快捷這一實(shí)況,所以I/0代價通常是DBMS功能發(fā)揮的障礙點(diǎn)。故此編制出I/0代價最少的規(guī)劃,并把控好CPU時間與I/0時間的均衡性,為高效查詢設(shè)計的重要目標(biāo)。實(shí)質(zhì)上就是期待規(guī)劃出有效利用索引、磁盤讀寫最小、最高效地利用了內(nèi)存CPU資源的系統(tǒng)。
2 與數(shù)據(jù)庫查詢優(yōu)化相關(guān)的因素
(1)文件組織。常見的有流水文件、順序文件、索引文件與HASH文件等,它是數(shù)據(jù)庫的物理基礎(chǔ),對數(shù)據(jù)庫功能產(chǎn)生直接影響,在等值查詢方面,散列文件所取得的效果優(yōu)于索引文件與順序文件。(2)存儲介質(zhì)。存儲介質(zhì)影響各類文件組織模式。在存取速度上,隨機(jī)存儲好于半隨機(jī)存儲與順序存儲[1]。(3)查詢策略。通常被劃分為兩種類型,即代數(shù)優(yōu)化與非代數(shù)優(yōu)化,將索引、排序整合進(jìn)優(yōu)化措施中,可以達(dá)到提升查詢效率的目標(biāo)。(4)查詢算法。不同的位圖配置、不同的查詢措施、不同的組織文件所應(yīng)用的查詢算法均存在差異性。例如線性搜索算法通常應(yīng)用對象為向量結(jié)構(gòu)的順序文件,通常是在磁帶(順序存儲介質(zhì))上的存儲模式。
3 優(yōu)化用戶查詢規(guī)劃的方案
3.1 合理使用索引
索引為數(shù)據(jù)庫中一個應(yīng)用頻率較高的數(shù)據(jù)庫對象,優(yōu)化查詢的主要方法為構(gòu)建索引,索引也是數(shù)據(jù)庫一并把事先分類好的數(shù)據(jù)整合進(jìn)多類表格的有效方法。在關(guān)系數(shù)據(jù)庫的表上科學(xué)合理的構(gòu)建索引,在提升數(shù)據(jù)庫數(shù)據(jù)查詢速度,優(yōu)化數(shù)據(jù)庫功能方面體現(xiàn)巨大價值。,每一類索引的應(yīng)用均以磁盤容量為媒介(除了集簇索引之外)。當(dāng)應(yīng)用一個索引時,數(shù)據(jù)庫引擎務(wù)必要同時讀取兩類數(shù)據(jù)信息,這兩類數(shù)據(jù)讀取為數(shù)據(jù)庫必須錄入的信息,第一類數(shù)據(jù)被讀取至現(xiàn)實(shí)數(shù)據(jù)指針的索引上,第二類數(shù)據(jù)被讀入至指針特定的方位上。故此,創(chuàng)設(shè)的索引時務(wù)必能夠和現(xiàn)實(shí)應(yīng)用系統(tǒng)的查詢需要有效整合在一起,借此途徑實(shí)現(xiàn)優(yōu)化查詢的目標(biāo)。
在關(guān)系數(shù)據(jù)庫中,索引應(yīng)科學(xué)應(yīng)用,遵照如下規(guī)則:①在頻道開展連接,卻沒有設(shè)定是外鍵的列上構(gòu)建索引,那些不時連接的字段借助優(yōu)化器會自動產(chǎn)生索引;②在主鍵索引層面上,主鍵數(shù)目低于列的25%,這樣普通列數(shù)目才會得到保障,索引空間被高效利用;③在條件表達(dá)式內(nèi)那些頻頻應(yīng)用不同值的列上構(gòu)建檢索,不同值應(yīng)用較少的列上無需構(gòu)建索引;④在經(jīng)常開展排序或分組(即進(jìn)行g(shù)roup by或order by操作)的位置上構(gòu)建索引;⑤在作為最小值等聚集函數(shù)上可以構(gòu)建索引。 對于索引而言,無論是構(gòu)建、維護(hù)與執(zhí)行環(huán)節(jié)上均會使關(guān)系數(shù)據(jù)庫出現(xiàn)代償行為、所以科學(xué)應(yīng)用索引是極為必要的。錯誤的索引不但不會優(yōu)化數(shù)據(jù)庫性能,還會使一些負(fù)面影響產(chǎn)出。
例如對于聚簇索引而言,其內(nèi)索引存儲值的次序要與表內(nèi)數(shù)據(jù)的物理存儲次序完全吻合.構(gòu)建聚簇索引時,系統(tǒng)會自動對表的物理數(shù)據(jù)頁中的數(shù)據(jù)信息參照列數(shù)要求進(jìn)行排序,繼而再將其存儲至磁盤內(nèi),也就是說聚簇索引和數(shù)據(jù)是共同體,其葉節(jié)點(diǎn)內(nèi)存儲的是現(xiàn)實(shí)數(shù)據(jù).因?yàn)榫鄞厮饕?guī)定了表內(nèi)數(shù)據(jù)的物理次序,所以每張表只允許有一個聚簇索引,一般情況下應(yīng)用主鍵去實(shí)現(xiàn)構(gòu)建的目標(biāo).聚簇索引通常適用于以下幾類查詢模式:值在某一范疇中的查詢、返回大量結(jié)果的查詢、使用join句的查詢、運(yùn)用了group by或order by子句的查詢。
3.2 簡化或避免排序
應(yīng)當(dāng)簡化或規(guī)避對大規(guī)模列表多次排序得操作行為。若能夠應(yīng)用索引自行生成輸出時,優(yōu)化器就不必進(jìn)行排序這一程序。但是如果索引內(nèi)不存在一個或多個等待排序的列,group by或order by子句內(nèi)列的次序和索引的次序存在差異,并且排序的來源表存在差異之時,就應(yīng)進(jìn)行列排序。為了達(dá)到規(guī)避不必要排序這一行為方式,增設(shè)索引是極為有效的辦法,進(jìn)而科學(xué)的整合數(shù)據(jù)庫表,雖然有時候會影響列表的美觀性,但是能使效率大幅度提升。若排序操作務(wù)必進(jìn)行,那么就積極探尋簡化措施,例如減縮排序列的范疇等。
3.3 科學(xué)應(yīng)用臨時表
對關(guān)系數(shù)據(jù)庫中表的一個子集進(jìn)行排序并構(gòu)建臨時表,在提升查詢速度方面體現(xiàn)一定的實(shí)用價值[2]。科學(xué)應(yīng)用臨時表能夠降低多重排序操作行為出現(xiàn)的概率,并且從某種角度分析還能夠簡化優(yōu)化器工作模式。臨時表內(nèi)的行數(shù)低于主表內(nèi)的行數(shù),并且物理順序即為所規(guī)定的順序,壓縮了磁盤I/O,故此查詢工作量也相應(yīng)降低。
3.4 避免使用字符匹配查詢
謂詞LIKE具有字符串匹配的功能,但是配置工作的開展會耗用大量的人力資源與時間。比如:
SELECT*FROM student WHERE xhLIKE“05%"
即便是于xh字段上構(gòu)建索引,但是在這種局勢中必須應(yīng)用順序掃描模式,并且也要規(guī)避非開始的子串。比如:SELECT*FROM student WHERE xmLIKE“二洋%”
因?yàn)樵趙here子句中應(yīng)用了非開始子串的緣故,所以這一語句不會應(yīng)用索引。
3.5 用排序來取代非順序存取
磁盤的非順序存取是最緩慢的操作行為,具體體現(xiàn)在磁盤存取臂反復(fù)移動方面上。因?yàn)镾QL語句中潛藏上述這一狀況,所以導(dǎo)致用戶在編寫應(yīng)用流程環(huán)節(jié)中,極易寫出存取大量非順序頁的查詢程序。故此,為了處理上述問題,經(jīng)常會應(yīng)用數(shù)據(jù)庫的排序能力去取代數(shù)據(jù)的非順序存取能力,達(dá)到優(yōu)化查詢質(zhì)量的目標(biāo)。
4 結(jié)語
本文對影響關(guān)系數(shù)據(jù)庫查閱優(yōu)化的幾種因素,同時闡述了關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化程序與措施。在數(shù)據(jù)庫技術(shù)不斷翻新時代中,掌握關(guān)系數(shù)據(jù)庫查詢優(yōu)化技術(shù),編寫可行的查詢規(guī)劃,可以使數(shù)據(jù)庫應(yīng)用系統(tǒng)功能大幅度提升,協(xié)助人能提高工作效率。
參考文獻(xiàn)
[1]伍應(yīng)樹,趙志剛,李憲明.關(guān)系數(shù)據(jù)庫基于索引查詢的優(yōu)化設(shè)計研究[J].電腦編程技巧與維護(hù),2016,17:56-58+79.
[2]孫偉.試析關(guān)系數(shù)據(jù)庫中關(guān)鍵詞查詢結(jié)果動態(tài)優(yōu)化[J].數(shù)字技術(shù)與應(yīng)用,2016,09:228+231.endprint