戴佳鵬 貴州廣播電視大學(xué)
關(guān)于SQL Server數(shù)據(jù)庫的查詢優(yōu)化訣竅
戴佳鵬 貴州廣播電視大學(xué)
當(dāng)前,使用頻率比較高的數(shù)據(jù)庫是SQL Server數(shù)據(jù)庫,該數(shù)據(jù)庫已更多的在信息系統(tǒng)、電子商務(wù)、教學(xué)等各種領(lǐng)域里應(yīng)用,本文將SQL Server對數(shù)據(jù)庫的性能分析,提出查詢優(yōu)化措施,以此提高數(shù)據(jù)查詢效率。
SQL Server數(shù)據(jù)庫 查詢優(yōu)化 訣竅
隨著科技的發(fā)展,互聯(lián)網(wǎng)的不斷普及,以及移動互聯(lián)網(wǎng)帶寬進(jìn)一步提升與電子商務(wù)的深入發(fā)展,作為當(dāng)前兩大熱點(diǎn)技術(shù)物聯(lián)網(wǎng)與云計(jì)算的應(yīng)用變得非常豐富全面,更多的傳感設(shè)備和移動終端接入到移動互聯(lián)網(wǎng)中,因此產(chǎn)生的各種數(shù)據(jù)呈現(xiàn)出了爆炸式的增長。“大數(shù)據(jù)”時(shí)代的來臨,使得不同類型的信息管理系統(tǒng)與數(shù)據(jù)庫結(jié)合更加緊密,數(shù)據(jù)的應(yīng)用不斷的增長,其數(shù)據(jù)庫的作用就會更加重要。尤其是在數(shù)據(jù)量超過幾萬、幾十萬,或者更多時(shí),數(shù)據(jù)庫就會發(fā)生瓶頸。而人們在日常對眾多數(shù)據(jù)庫的應(yīng)用過程中,查詢操作的頻率是最高,在數(shù)據(jù)庫管理系統(tǒng)中,幾乎有80%的工作是在進(jìn)行數(shù)據(jù)的查詢與檢索工作,所以做好對數(shù)據(jù)庫系統(tǒng)查詢性能優(yōu)化非常有必要。當(dāng)前,使用頻率比較高的數(shù)據(jù)庫是SQL Server數(shù)據(jù)庫,該數(shù)據(jù)庫已更多的在信息系統(tǒng)、電子商務(wù)、教學(xué)等各種領(lǐng)域里應(yīng)用,本文將SQL Server對數(shù)據(jù)庫的性能分析,提出查詢優(yōu)化措施,以此提高數(shù)據(jù)查詢效率。
當(dāng)遇到SQL Server數(shù)據(jù)庫查詢速度慢的狀況,可以創(chuàng)建索引,索引就好比一本書的目錄,數(shù)據(jù)庫沒有索引也就是沒有書的目錄,有了目錄,查找起來也就非??炝恕K饕梢苑殖煞謫瘟兴饕c組合索引兩種。單列索引也就是一個索引只含有單個列,一個表存在多個單列索引,可是這都不是組合索引,組合索引可以一個索包含多個列,這是兩者的區(qū)別。索引的創(chuàng)建主要是在數(shù)據(jù)庫表中的某些列的上面建立,在創(chuàng)建索引的過程中要考慮好哪些列上能夠創(chuàng)建索引,哪些列上不可以創(chuàng)建索引。如:在經(jīng)常需要搜索的列上可以創(chuàng)建索引,這樣能夠加速搜索的效率;在作為主鍵的列上可以創(chuàng)建索引,可以強(qiáng)化該列的唯一性與組織表中數(shù)據(jù)的排列結(jié)構(gòu);在日常用在連接的列上可以創(chuàng)建索引,這些列通常是一類外鍵,能夠提高連接的速度。通過創(chuàng)建索引,可以提高數(shù)據(jù)的檢索速度,加速表與表間的連接,尤其是在查詢的過程中可以使用優(yōu)化隱藏器,增強(qiáng)系統(tǒng)的性能。而且通過創(chuàng)建唯一性索引,能夠確保數(shù)據(jù)庫表里每一行數(shù)據(jù)的唯一性。同時(shí)在利用分組與排序子句進(jìn)行數(shù)據(jù)檢索中還可以顯著減少查詢中分組與排序的時(shí)間。雖然使用索引有多方面的優(yōu)點(diǎn),但是索引也會有它的不足,一是減小了更新表的更新頻率,尤其是在對表進(jìn)行INSERT、UPDATE與DELETE。因?yàn)楦卤磉^程中,MySQL不但要保存數(shù)據(jù),同時(shí)還要對索引文件進(jìn)行保存。二是對SQL Server數(shù)據(jù)庫某列添加索引后,在使用該索引對整個數(shù)據(jù)庫進(jìn)行查詢過程中,則只會在索引范圍里進(jìn)行掃描。三是創(chuàng)建索引會占用磁盤空間的索引文件,假設(shè)MySQL有非常多的表,則需要花時(shí)間研究構(gòu)建最優(yōu)秀的索引。因此,我們在實(shí)際的使用過程中,我們會針對各類不同的軟件,使用的目的是不一樣的。但我們應(yīng)針對一些記錄數(shù)非常多的數(shù)據(jù)庫構(gòu)建索引查詢,以此達(dá)到提高查詢效率的目的。
SQL語句的優(yōu)化的目的是提高查詢效率,盡量降低查詢中參與加工的數(shù)據(jù)量,從而實(shí)現(xiàn)優(yōu)化空間與時(shí)間的目的。SQL作為數(shù)據(jù)查詢、數(shù)據(jù)控制、數(shù)據(jù)操縱與數(shù)據(jù)定義為一體的數(shù)據(jù)庫語言,能夠作為獨(dú)立的語言在終端設(shè)備上進(jìn)行交互方式使用,也可以在程序設(shè)計(jì)中的子語言使用,也就是放到高級語言中使用,使用者利用SQL語言快速從數(shù)據(jù)庫中獲取自己想要的數(shù)據(jù)信息。SQL數(shù)據(jù)庫語句優(yōu)化主要是把原有的SQL語句改變成為語義相同并且處理速度更快的SQL語句。SQL系統(tǒng)優(yōu)化是根據(jù)使用者提交的SQL語句,采取規(guī)則與成本的方法對提供的SQL語句進(jìn)行優(yōu)化。一個查詢通常會有許多實(shí)現(xiàn)方法,那么SQL語句的優(yōu)劣就非常關(guān)鍵,如果一個不良的SQL語句,就會造成訪問數(shù)據(jù)庫的效率差,使得沒有必要的數(shù)據(jù)掃描與傳輸沒有必要的數(shù)據(jù),這樣會造成過的的數(shù)據(jù)庫資源耗費(fèi)。如果一個良好的SQL語句,在查詢時(shí)就會降低對系統(tǒng)試圖優(yōu)化的時(shí)間,以此讓程序性能提高幾十倍。因此在SQL語句優(yōu)化過程中,可以做到以下幾點(diǎn)。
(1)SQL語句盡可能使用索引,防止使用‘!=’與‘lt;gt;’操作符
SELECT ITEM_DESC FROM CHECK_ITEMWHERE ITEM_IDlt;gt;‘ABC’可以改寫為:SELECT ITEM_DESC FROM CHECK_ITEMWHERE ITEM_IDgt;‘ABC’OR ITEM_IDlt;‘ABC’
(2)在數(shù)據(jù)查詢過程中國要降低對數(shù)據(jù)庫的訪問次數(shù),減小通配符的使用,比較常見的是select ? from STUDENT,如果需要使要幾列就選擇幾列使用,例如:select sno,sname from STUDENT。
(3)數(shù)據(jù)類型的不兼容會造成一些語句不能進(jìn)行優(yōu)化操作,要禁止使用不兼容的數(shù)據(jù)類型,比較常見的就是float和int、char和varchar等數(shù)據(jù)類型。例如:select name from teacher where salary>5 000,其中salary是money類型的,5000卻是一個整數(shù),在程序編寫時(shí)則會把money改變成整數(shù),卻不是在運(yùn)行過程中進(jìn)行轉(zhuǎn)換。
SQL數(shù)據(jù)庫查詢優(yōu)化是獲得良好執(zhí)行性能,而且簡化管理的最重要方式之一。本文從創(chuàng)建索引,優(yōu)化SQL數(shù)據(jù)庫語句兩方面分析,分析了其中存在的問題,并提出查詢優(yōu)化措施,使得數(shù)據(jù)查詢效率得以提高。
[1]楊秀榮.淺析關(guān)系數(shù)據(jù)庫的查詢優(yōu)化[J].數(shù)字技術(shù)與應(yīng)用.2017(07)
[2]顧進(jìn)廣,王巖松,朱婷婷,徐芳芳.SPES:基于謂詞選擇率估計(jì)的SPARQL查詢優(yōu)化方案[J].小型微型計(jì)算機(jī)系統(tǒng).2017(09)
[3]席潔.改進(jìn)布谷鳥算法的數(shù)據(jù)庫查詢優(yōu)化[J].微型電腦應(yīng)用.2017(08)
戴佳鵬,1973—,男,籍貫:貴州貴陽,單位:貴州廣播電視大學(xué),職稱職務(wù):副教授,研究方向:計(jì)算機(jī)網(wǎng)絡(luò)安全,數(shù)據(jù)庫安全。