mysql 數(shù)據(jù)庫(kù)海量數(shù)據(jù)查詢(xún)與優(yōu)化 |
發(fā)布時(shí)間: 2012/6/24 17:50:44 |
許多程序員認(rèn)為查詢(xún)優(yōu)化是DBMS(數(shù)據(jù)庫(kù)教程管理系統(tǒng))的任務(wù),與程序員所編寫(xiě)的SQL語(yǔ)句關(guān)系不大,這是錯(cuò)誤的。一個(gè)好的查詢(xún)計(jì)劃往往可以使程序性能提高數(shù)十倍。查詢(xún)計(jì)劃是用戶(hù)所提交的SQL語(yǔ)句的集合,查詢(xún)規(guī)劃是經(jīng)過(guò)優(yōu)化處理之后所產(chǎn)生的語(yǔ)句集合。DBMS處理查詢(xún)計(jì)劃的過(guò)程是這樣的:在做完查詢(xún)語(yǔ)句的詞法、語(yǔ)法檢查之后,將語(yǔ)句提交給DBMS的查詢(xún)優(yōu)化器,優(yōu)化器做完代數(shù)優(yōu)化和存取路徑的優(yōu)化之后,由預(yù)編譯模塊對(duì)語(yǔ)句進(jìn)行處理并生成查詢(xún)規(guī)劃,然后在合適的時(shí)間提交給系統(tǒng)處理執(zhí)行,最后將執(zhí)行結(jié)果返回給用戶(hù)。在實(shí)際的數(shù)據(jù)庫(kù)產(chǎn)品(如Oracle、Sybase等)的高版本中都是采用基于代價(jià)的優(yōu)化方法,這種優(yōu)化能根據(jù)從系統(tǒng)字典表所得到的信息來(lái)估計(jì)不同的查詢(xún)規(guī)劃的代價(jià),然后選擇一個(gè)較優(yōu)的規(guī)劃。雖然現(xiàn)在的數(shù)據(jù)庫(kù)產(chǎn)品在查詢(xún)優(yōu)化方面已經(jīng)做得越來(lái)越好,但由用戶(hù)提交的SQL語(yǔ)句是系統(tǒng)優(yōu)化的基礎(chǔ),很難設(shè)想一個(gè)原本糟糕的查詢(xún)計(jì)劃經(jīng)過(guò)系統(tǒng)的優(yōu)化之后會(huì)變得高效,因此所寫(xiě)語(yǔ)句的優(yōu)劣至關(guān)重要。下面重點(diǎn)說(shuō)明改善查詢(xún)計(jì)劃的解決方案。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |