關(guān)系數(shù)據(jù)庫(kù)SQL語句的設(shè)計(jì)優(yōu)化策略_第1頁
關(guān)系數(shù)據(jù)庫(kù)SQL語句的設(shè)計(jì)優(yōu)化策略_第2頁
關(guān)系數(shù)據(jù)庫(kù)SQL語句的設(shè)計(jì)優(yōu)化策略_第3頁
關(guān)系數(shù)據(jù)庫(kù)SQL語句的設(shè)計(jì)優(yōu)化策略_第4頁
關(guān)系數(shù)據(jù)庫(kù)SQL語句的設(shè)計(jì)優(yōu)化策略_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、    關(guān)系數(shù)據(jù)庫(kù)sql語句的設(shè)計(jì)優(yōu)化策略    摘要:基于關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)查詢語言sql被大量的應(yīng)用到數(shù)據(jù)庫(kù)內(nèi),利用其查詢與檢索方面的功能可以使得系統(tǒng)運(yùn)行更加的準(zhǔn)確,但是效率方面卻并不理想。數(shù)據(jù)庫(kù)性能水平高低通常需要從響應(yīng)時(shí)間與吞吐量方面出發(fā)分析。響應(yīng)時(shí)間越短、吞吐量越大,則表示數(shù)據(jù)庫(kù)功能越強(qiáng)。本文重點(diǎn)分析的是數(shù)據(jù)庫(kù)內(nèi)進(jìn)行sql語句優(yōu)化的主要方法,提出具體優(yōu)化原則。關(guān)鍵詞:數(shù)據(jù)庫(kù)性能;查詢;優(yōu)化;sql語句1sql概述查詢優(yōu)化是關(guān)系數(shù)據(jù)庫(kù)內(nèi)極為重要的組成部分,其能夠讓各項(xiàng)關(guān)系數(shù)據(jù)庫(kù)與非過程化的sql查詢語言發(fā)展取得非常好的效果。而針對(duì)優(yōu)化來說,其對(duì)于系

2、統(tǒng)方面的運(yùn)行既是機(jī)遇,也是挑戰(zhàn)。挑戰(zhàn)主要就是關(guān)系系統(tǒng)為了能夠達(dá)到用戶使用的最低功能而進(jìn)行查詢優(yōu)化。因?yàn)殛P(guān)系表達(dá)式的語義級(jí)別是很高的,這樣就會(huì)讓整個(gè)關(guān)系系統(tǒng)能夠體現(xiàn)出具體的查詢語義,進(jìn)而讓查詢優(yōu)化提升總體效果。當(dāng)前,目前所應(yīng)用的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)絕大多數(shù)都能夠通過應(yīng)用查詢語言sql(structured query language)來實(shí)現(xiàn)優(yōu)化。數(shù)據(jù)庫(kù)管理系統(tǒng)在運(yùn)行之后,可以高效獲得各項(xiàng)數(shù)據(jù)信息,了解維護(hù)效果,合理的組織進(jìn)行存儲(chǔ)數(shù)據(jù)運(yùn)行。其能夠?qū)崿F(xiàn)數(shù)據(jù)庫(kù)的管理與控制,確保數(shù)據(jù)庫(kù)運(yùn)行更加的安全、可靠,同時(shí)還能夠?qū)崿F(xiàn)數(shù)據(jù)共享。在用戶根據(jù)需要檢索相應(yīng)數(shù)據(jù)信息,能夠利用sql語言直接將請(qǐng)求發(fā)射出去,系統(tǒng)

3、會(huì)自動(dòng)處理該請(qǐng)求,將檢索到的數(shù)據(jù)直接發(fā)回給用戶。數(shù)據(jù)庫(kù)操作過程中,查詢工作量是巨大的,在實(shí)際應(yīng)用中是通過se-lect語句在sql語句中的代價(jià)是最大的。如果在操作中應(yīng)用了優(yōu)秀查詢策略,就能夠提高查詢的速度和質(zhì)量,縮短查詢時(shí)間,其對(duì)于查詢有著非常高的效果。人們通過在應(yīng)用sql查詢語句時(shí)有錯(cuò)誤觀點(diǎn),就是過度的重視正確率,卻沒有關(guān)注不同的sql查詢語句實(shí)現(xiàn)方式所存在的不同點(diǎn),這種不同點(diǎn)在復(fù)雜數(shù)據(jù)庫(kù)中應(yīng)用效果更好。通過合理檢索方式可以提升查詢效率,但是如果sql查詢語句缺乏合理性,就會(huì)導(dǎo)致索引功能難以實(shí)現(xiàn),因此,應(yīng)該能夠?qū)懗鰏ql查詢語句,還要提升該語句的性能,以保證檢索的效率和質(zhì)量符合人們使用需要。

4、2物理查詢select*fromtab1,tab2wheretab1.id=tab2.idandtab1.col1=123and tab2.col1='abc'照這個(gè)語句的順序,先要tab1和tab2進(jìn)行笛卡爾乘積,再按照tab1.col1=123and tab2.col1='abc'進(jìn)行篩選。從這個(gè)方面出發(fā),即使是初學(xué)者也認(rèn)為該方式的查詢效率是極低的,首先應(yīng)該充分了解邏輯處理與物力處理之間的差異,邏輯處理是執(zhí)行該查詢能夠獲得怎樣的結(jié)果,而邏輯查詢的各個(gè)環(huán)節(jié)都要從該查詢?cè)谶壿媹?zhí)行者的先后順序,按照該順序得到相應(yīng)的查詢結(jié)果,這與數(shù)學(xué)中先乘除后加減的運(yùn)算順序的原理是

5、相同的。邏輯查詢的目的是獲取所需要的結(jié)果,而獲得該結(jié)果需要經(jīng)過怎樣的過程卻是不關(guān)心的。而物理處理是獲得該結(jié)果的同時(shí),還要確保其性能合理。下面具體分析物理處理方式。當(dāng)一個(gè)sql查詢語句進(jìn)入到數(shù)據(jù)庫(kù)搜索引擎之后,其主要的作用就是按照查詢計(jì)劃開展工作,此時(shí)會(huì)有兩種情況發(fā)生,其一就是緩存中無法確定具體的查詢計(jì)劃方式,然后系統(tǒng)會(huì)根據(jù)需要自動(dòng)生成另外一個(gè)計(jì)劃;其二是該查詢計(jì)劃已經(jīng)真實(shí)的存在與緩存中,然后就是根據(jù)該計(jì)劃開始進(jìn)行查詢作業(yè)。執(zhí)行計(jì)劃在編譯生成階段,具體要經(jīng)過如下幾個(gè)步驟才能實(shí)現(xiàn):第一步:分析,這是進(jìn)行分批處理形成分析樹的主要環(huán)節(jié),同時(shí)還應(yīng)該根據(jù)需要來檢測(cè)確定語句是否能夠達(dá)到正確性的標(biāo)準(zhǔn)。第二步:

6、代數(shù)化,該階段的作用就是進(jìn)行第一步分析樹的輸入,生成之后可以形成查詢處理器作為輸出內(nèi)容,進(jìn)而可以實(shí)現(xiàn)查詢優(yōu)化的效果。第三步:查詢優(yōu)化,主要是通過查詢優(yōu)化器組件來完成該步驟。查詢階段需要明確具體的順序訪問表,然后確定具體的索引方法,經(jīng)過確定各種聯(lián)接算法來明確具體的查詢優(yōu)化器組件,但是該方式的確定并不是隨意進(jìn)行的,應(yīng)該達(dá)到前提條件才能進(jìn)行,以保證最終的結(jié)果集符合人們的查詢需要。從這一方面出發(fā),結(jié)果集必須要按照具體的邏輯處理方式來得到相應(yīng)的各個(gè)階段的結(jié)果。優(yōu)化器應(yīng)該根據(jù)需要實(shí)現(xiàn)查詢的多個(gè)變體確定,最終能夠確定成本最低的一個(gè)查詢計(jì)劃。3     sql子句分析數(shù)

7、據(jù)庫(kù)查詢作業(yè)的設(shè)計(jì)過程中,所使用的查詢數(shù)據(jù)的樣式也是多樣化的,但是選擇哪個(gè)語句來進(jìn)行,就顯得尤為重要,這是因?yàn)槠鋾?huì)影響最終的查詢效率。因此,在帶有where條件時(shí),應(yīng)該有效的預(yù)防在where句子內(nèi)的字段來開展函數(shù)或者表達(dá)式的操作,這樣就會(huì)出現(xiàn)引擎索引無法進(jìn)行而開展全表的掃描處理,造成查詢的工作效率比較差。任何的對(duì)列操作的使用都會(huì)產(chǎn)生表掃描,其主要包含計(jì)算表達(dá)式、數(shù)據(jù)庫(kù)函數(shù)等等方面,在具體的查詢操作中,將其移動(dòng)到等號(hào)右邊來進(jìn)行。4     sql語句優(yōu)化原則“20%的代碼用去了80%的時(shí)間”,這是開展程序設(shè)計(jì)中的重要定律和指導(dǎo)思想,數(shù)據(jù)庫(kù)的操作實(shí)踐中也應(yīng)該

8、重視這一方面。查詢優(yōu)化應(yīng)該掌握具體的問題,比如數(shù)據(jù)庫(kù)的應(yīng)用程序,主要的目的就是要有效的提升sql運(yùn)行的效率。查詢優(yōu)化最為關(guān)鍵的是從服務(wù)器內(nèi)獲得相應(yīng)數(shù)據(jù),并不是按照順序進(jìn)行全部?jī)?nèi)容讀取。關(guān)系數(shù)據(jù)庫(kù)查詢優(yōu)化要按照如下原則來進(jìn)行:要盡量的先進(jìn)行選擇運(yùn)算的操作,然后能夠獲得相對(duì)比較小的中間結(jié)果;把多個(gè)選擇與投影操作要同時(shí)執(zhí)行,能夠避免分次掃描文件而導(dǎo)致效率較低;投影操作應(yīng)該根據(jù)雙目核算的方式來進(jìn)行;把笛卡兒積和其后的選擇運(yùn)算合并,能夠有效的縮短時(shí)間;如果是文件要連接則要合理進(jìn)行排序或者索引,能夠有效對(duì)應(yīng)各個(gè)關(guān)系;按照小關(guān)系運(yùn)算優(yōu)化處理的原則,減少中間結(jié)果;把表內(nèi)和查詢結(jié)果沒有關(guān)系的屬性全部剔除,能夠減

9、少中間結(jié)果的數(shù)量;提取公共表達(dá)式,根據(jù)要求預(yù)先保存,可以防止出現(xiàn)重復(fù)計(jì)算,縮短時(shí)間。上述原則的應(yīng)用能夠提升查詢速度,但是很多條件之下,要經(jīng)過多次反復(fù)試驗(yàn)才能確定最為合理的實(shí)施方案。測(cè)試是最有效的方式,可以把相同功能的不同sql語句執(zhí)行情況進(jìn)行考察分析,但是數(shù)據(jù)庫(kù)內(nèi)數(shù)據(jù)量很少,無法通過比較實(shí)現(xiàn),應(yīng)該查看執(zhí)行計(jì)劃,就能夠把相同功能的多條sql語句全部都輸入到系統(tǒng)內(nèi),然后再按ctrl+l查看所利用的索引表掃描次數(shù)。5結(jié)束語數(shù)據(jù)庫(kù)設(shè)計(jì)的水平,會(huì)直接影響管理系統(tǒng)的各項(xiàng)功能,而數(shù)據(jù)庫(kù)優(yōu)化則是進(jìn)行水平分析的重要指標(biāo)。因此,在數(shù)據(jù)庫(kù)優(yōu)化中,應(yīng)該重視各項(xiàng)措施的應(yīng)用,做好各個(gè)方面問題的考慮與分析,但是因?yàn)槠溆绊懸蛩乇容^多,所以在設(shè)計(jì)中還會(huì)存在很多矛盾。這就需要綜合使用各種數(shù)據(jù)庫(kù)設(shè)計(jì)方式,以提升數(shù)據(jù)庫(kù)的性能,達(dá)到最優(yōu)化的應(yīng)用效果,使得系統(tǒng)開發(fā)效率和質(zhì)量得以有效的提升。參考文獻(xiàn):1   張欣.基于sql標(biāo)準(zhǔn)的關(guān)系數(shù)據(jù)庫(kù)查詢優(yōu)化技術(shù)研究j.煤炭技術(shù)(12):284-286.2   肖輝輝,段艷明.關(guān)系數(shù)據(jù)庫(kù)sq

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論