董曉海
摘 要
在現(xiàn)代化技術的發(fā)展中,隨著數(shù)據(jù)數(shù)量的逐漸增加,數(shù)據(jù)庫的查詢優(yōu)化的重要性逐漸提高。而查詢優(yōu)化也成為了數(shù)據(jù)庫的核心操作環(huán)節(jié)。數(shù)據(jù)技術的發(fā)展和數(shù)據(jù)的查詢性矛盾逐漸凸顯,數(shù)據(jù)系統(tǒng)對于查詢新能有了更高的要求。因此,我們需要對數(shù)據(jù)庫管理中的主要問題進行分析,突出查詢優(yōu)化的功能。本文將對SQL Server查詢優(yōu)化器原理與優(yōu)化進行分析,望給相關的從業(yè)人員提供幫助。
【關鍵詞】SQL Server 查詢優(yōu)化器 原理 優(yōu)化
1 前言
在信息系統(tǒng)中,數(shù)據(jù)系統(tǒng)是進行信息管理的核心環(huán)節(jié),也是計算機得以運行的重要關節(jié),本文將對查詢操作中的重要作用進行分析,并突出查詢操作在數(shù)據(jù)庫操作中心中的重要地位。數(shù)據(jù)庫中的查詢操作是依照SELECT語句進行的操作。若信息系統(tǒng)中的數(shù)據(jù)信息已經(jīng)存在有上千條記錄,則進行全系統(tǒng)的掃描將需要話費十分鐘的時間,若掃描的數(shù)據(jù)的速度較慢,則需要一個小時。若使用比全表進行掃描,將可以使用更好的掃描策略來大大的降低查詢單額時間,因此,查詢優(yōu)化技術對于提高信息系統(tǒng)的工作效率具有至關重要的作用。
2 必要性分析
數(shù)據(jù)庫中的查詢優(yōu)化不單單是RDBMS進行技術實現(xiàn)的關鍵性環(huán)節(jié),也可以突出整個系統(tǒng)的優(yōu)勢所在。查詢優(yōu)化使得系統(tǒng)的選擇存取路徑的壓力大大降低。用戶在使用的過程中只需要提出需要運行的指令,并不需要操作整個運行的流程。數(shù)據(jù)系統(tǒng)在程序的優(yōu)化方面具有很大的優(yōu)勢,而且還可以使得表達查詢的效率大大提高。因此,查詢優(yōu)化的作用在進行查詢和處理的階段具有十分重要的作用,當在數(shù)據(jù)庫內部提交一個查詢的語句時,系統(tǒng)中的DBMS會對語句進行檢查,并把得到的語句應用在查詢優(yōu)化器中。而優(yōu)化器在接收到數(shù)據(jù)庫的語句命令之后,根據(jù)數(shù)據(jù)系統(tǒng)中的優(yōu)化方法進行語句的組成分析。SQL數(shù)據(jù)庫中的優(yōu)化器主要是依據(jù)成本優(yōu)化器進行設計的。在給定查詢分析的條件下,其對分析出很多候選的查詢計劃,同時對每個查詢計劃進行分析,并得到查詢計劃的成本和結果,根據(jù)分析的結果選擇一個成本較低的運行。但是在實際的運行過程中,查詢優(yōu)化器并不可能對每個成本進行優(yōu)化,并根據(jù)獲得的信息進行估算,因此,查詢優(yōu)化器會綜合分析查詢計劃的質量以及時間,并做出平衡的分析,最終得到一個最佳運行計劃。SQL數(shù)據(jù)庫把用戶提交的語句當作是整個數(shù)據(jù)系統(tǒng)的優(yōu)化出,其對于系統(tǒng)的運行效率至關重要,因此,SQL的語句是查詢優(yōu)化器運行的關鍵。
3 查詢優(yōu)化的途徑
3.1 實現(xiàn)語句的規(guī)范化書寫
為了使得SQL的運行效率提高,我們需要對SQL的語句書寫進行分析,并實現(xiàn)語句的規(guī)范化。在語句的書寫過程中,注重語句的大小寫等方面,避免查詢器進行二次解析,進而在系統(tǒng)中執(zhí)行兩個不同的計劃。
3.2 正確的使用索引
在所有的數(shù)據(jù)庫對象中,索引具有至關重要的地位。而SQL Server查詢器是通過建立索引來進行優(yōu)化查詢的。所以,我們需要在數(shù)據(jù)庫系統(tǒng)的表格上建立較為合適的索引,這樣可以使得是表掃描被有效減少,最終使得查詢造成的開銷降低。最終可以使得數(shù)據(jù)庫的查詢效率以及查詢性能得到改變。然而在SQL Server中創(chuàng)建索引會使得系統(tǒng)的開銷在時間上和空間上都有所增加。所以,我們需要在此過程中合理的應用系統(tǒng)的查詢需要,斌使二者緊密結合,最終達到優(yōu)化和查詢的目的。而SQL Server中的聚集索引在進行排序的過程中需要參照聚集索引字段的順序。而其本身就是一種組織形式,因此具有較高的運行效率。而所插入的記錄的位置不是雜亂無章的,而是需要按照一定的順序進行,若被插入的數(shù)據(jù)頁沒有空間,則會導致數(shù)據(jù)頁分裂。
3.3 使用%進行模糊查詢時需要慎重考慮
在進行模糊查詢的關鍵字中有%和_兩個,其中前者表示的是包含零個或者任意多個字符串,而后者表示的是單個字符,所以,在使用%時需要慎重考慮。
3.4 連接查詢優(yōu)化分析
SQL Server主要有三種連接的方式。在進行連接的過程中要注意字段需要選擇含有聚集索引的字段。實際中,聚集索引的字段順序已經(jīng)得到確定,所以需要進行兩個表的數(shù)據(jù)進行連接。而若想保障執(zhí)行的效率需要把A表和B表的數(shù)據(jù)進行連接。當需要對where的條件進行考慮時,首先要做好運算選擇,并盡量控制A表和B表的結果集,然后在進行連接。
3.5 存儲過程的使用
存儲過程中所使用的Procedure是一組可以完成特定功能的SQL Server語句,其是在編譯結束之后,在進行存儲的。其在進行存儲的過程中囊括了邏輯控制語句以及數(shù)據(jù)操縱語句等,因此,Procedure可以實現(xiàn)數(shù)據(jù)的接收、輸出等。但是其在存儲的過程中需要在數(shù)據(jù)庫中進行編譯,并在數(shù)據(jù)庫中進行存儲,因此,在運行速度上與單獨的SQL Server語句要快很多。此外,在調用時僅僅需要使用存儲的名字以及必要的參數(shù)信息,所以可以減輕網(wǎng)絡負擔。
4 結語
綜上所述,我們在進行SQL Server的開發(fā)和利用的過程中,可以使用查詢優(yōu)化器進而提高系統(tǒng)的整體性能。查詢優(yōu)化的優(yōu)勢在進行大量的數(shù)據(jù)查詢中十分重要。本文對SQL Server查詢優(yōu)化器的原理進行分析,并介紹了查詢優(yōu)化的優(yōu)越性,最終提出進行SQL Server查詢優(yōu)化的策略,發(fā)現(xiàn)SQL Server的查詢優(yōu)化實際就是在保證結果正確的基礎上,使用優(yōu)化器進行語句識別,同時利用索引,控制表掃描的I/O次數(shù)。當SQL Server收到用戶的查詢命令時,可以根據(jù)優(yōu)化措施來有效地縮短查詢的時間,保障查詢的效率。這對于數(shù)據(jù)量較大的查詢操作具有重要意義。因此,為了使得海量數(shù)據(jù)的查詢更加高效,我們需要發(fā)揮SQL Server查詢優(yōu)化器的優(yōu)勢,同時進行查詢優(yōu)化器的完善,保障查詢的質量。
參考文獻
[1]劉維學.SQL Server查詢優(yōu)化器原理與優(yōu)化實例分析[J].計算機技術與發(fā)展,2013(8).
[2]未培.SQL SERVER查詢優(yōu)化實證研究[J].山東農(nóng)業(yè)工程學院學報,2014(05).
[3]王軍弟.SQL Server查詢優(yōu)化技術的研究與實現(xiàn)[J].科技視界,2016(06).
作者單位
云南省水文水資源局大理分局 云南省大理市 671000