


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
sql多表聯(lián)接查詢優(yōu)化技巧
0串聯(lián)查詢操作多表連接操作通常需要大量的cpu時間和內(nèi)存。因此,多表連接請求在優(yōu)化數(shù)據(jù)庫方面發(fā)揮著重要作用。這是數(shù)據(jù)庫中最基本、最常用、最復雜的操作。在數(shù)據(jù)庫的管理信息系統(tǒng)中,聯(lián)接查詢操作是所有數(shù)據(jù)庫操作中所占據(jù)比重最大的操作。當數(shù)據(jù)庫系統(tǒng)積累到一定程度,若查詢時采用單條順序掃描,那么掃描一遍所有的記錄可能就得花上幾十分鐘,甚至幾小時,這樣的系統(tǒng)就失去了現(xiàn)實的使用價值。采取什么樣的查詢策略,使聯(lián)接查詢時間降低,就是本文需要研究的查詢優(yōu)化問題。1盡量串聯(lián)查詢,盡量使用聯(lián)少連接表聯(lián)接查詢操作的前提是笛卡兒積,即要將多表中所有的元組拿來運算,再從中找出符合條件的,其本身就增加了運算的負擔,所以我們在做優(yōu)化時盡量避免聯(lián)接查詢。如果必須要使用聯(lián)接查詢時也要盡量使用較少的聯(lián)接表,查詢優(yōu)化力圖找出給定等價的表達式,但執(zhí)行效率更高,一個查詢往往會有許多實現(xiàn)方法,關鍵是如何找出一個與之等價的且操作時間又少的表達式。優(yōu)化的核心問題是盡可能減少查詢中各表的參與加工的數(shù)據(jù)量,從而達到優(yōu)化時間和空間的目的。2聯(lián)合方式搜索優(yōu)化原則2.1多表粘連查詢給定三個關系模式:(以下實例均以此為例)例:查詢1001學生選修的課程成績。分析:在此查詢中涉及到sno和score兩個字段,sno在s表中,score在sc表中,若要使用s和sc的聯(lián)接,SQL語句為:SELECTscoreFROMs,scWHEREs.sno=sc.snoandsno=‘1001’則此查詢就是多表聯(lián)接查詢,這樣勢必要做笛卡兒積操作,所以會增加檢索的時間。分析:在此查詢中涉及到的sno和score兩個字段可以在sc表中全部找到,按照盡量使用單表操作原則,可以只用一個sc表。SQL語句改為:SELECTscoreFROMscWHEREsno=‘1001’這樣避免了聯(lián)接時的笛卡兒積操作,大大提高檢索速度。2.2不能執(zhí)行的連接操作應遵循以下原則2.2.1多表串聯(lián)查詢這樣就可以減少查詢中參與加工的數(shù)據(jù)量,從而達到優(yōu)化時間和空間的目的。例:查詢選修了“數(shù)據(jù)庫應用”課程的學生的學號和成績。分析:此查詢中涉及到sno、cname和score三個字段,分別在s、c和sc中,若要使用s、c和sc的聯(lián)接,SQL語句為:SELECTsno,scoreFROMs,c,scWHEREs.sno=sc.snoando=soandcname=‘數(shù)據(jù)庫應用’則此查詢是多表聯(lián)接查詢,并且聯(lián)接的三表中,兩兩都要做笛卡兒積操作,所以會增加檢索的時間。分析:此查詢中涉及到sno、cname和score三個字段,分別在c表和sc表中就可以全部找到,按照聯(lián)接表時聯(lián)少不聯(lián)多的原則,可以只用c和sc表。SQL語句改為:SELECTsno,scoreFROMc,scWHEREo=soandcname=‘數(shù)據(jù)庫應用’2.2.2核心表是連接s表和c表的紐帶使聯(lián)接的表的個數(shù)盡量少,但是不能一味的追求表的個數(shù),如果表的使用不能達到我們要查詢的數(shù)據(jù),或者不能實現(xiàn)聯(lián)接,那也是不成功的。例3:查詢選修了“數(shù)據(jù)庫應用”課程的學生的姓名。分析:此查詢中涉及到sname和cname兩個字段,分別在s表和c表中,若要使用s和c的聯(lián)接,SQL語句為:SELECTsname,cnameFROMs,cWHEREcname=‘數(shù)據(jù)庫應用’則此查詢是多表聯(lián)接查詢,但兩個表沒有公共屬性,所以實現(xiàn)不了聯(lián)接,這樣此操作就變成了單純的笛卡兒積操作,在此聯(lián)接中會查詢出不符合條件的記錄,失去了查詢的意義。分析:此查詢中涉及到sname和cname兩個字段,分別在s表和c表中,但是s表和c表沒有公共屬性,不能實現(xiàn)聯(lián)接,所以必須借助sc表,所以此查詢是s表、c表和sc表三表的聯(lián)接。SQL語句改為:SELECTsname,cnameFROMs,c,scWHEREs.sno=sc.snoando=soandcname=‘數(shù)據(jù)庫應用’2.3多個數(shù)據(jù)表粘連當查詢多個數(shù)據(jù)表時,要先過濾后聯(lián)接。例5:查詢所有成績大于70分的學生的信息。分析:要做s表和sc表兩表聯(lián)接,并篩選出符合條件的記錄。此查詢語句首先將兩個數(shù)據(jù)表按照學號進行聯(lián)接,然后再將符合條件的記錄篩選。由于兩個數(shù)據(jù)表進行聯(lián)接時有些記錄是以后要篩選掉的,且多個數(shù)據(jù)表聯(lián)接是笛卡爾積運算,消耗的時間會隨著記錄個數(shù)的增加很快地增長。SQL語句改為:SELECT*FROMs,scWHEREscore>70ands.sno=sc.sno此聯(lián)接查詢語句克服了以上缺點,首先篩選出符合條件的記錄,減少了進行聯(lián)接的記錄個數(shù),然后再執(zhí)行聯(lián)接查詢,大大提高了查詢效率。3多表粘連查詢查詢優(yōu)化要抓住關鍵問題,對于數(shù)據(jù)庫應用程序來說,重點在于如何提高SQL的執(zhí)行效率。在數(shù)據(jù)庫的開發(fā)和維護過程中,多表聯(lián)接查詢的優(yōu)化設計可以提高系統(tǒng)性能,對于數(shù)據(jù)量大的數(shù)據(jù)庫系統(tǒng)尤為重要。以上介紹的幾種優(yōu)化策略使多表聯(lián)接查詢在時間和空間上提高了系統(tǒng)的性能,在一定程度上提高了查詢效率。s(sno,sname,sec,birthday,email)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東跑道膠黏劑施工方案
- 道路碎石基層施工方案
- 福田窗臺防水施工方案
- 中天服務:2024年年度審計報告
- 2025北京大興八年級(上)期末生物(教師版)
- 數(shù)控加工工藝與編程技術(shù)基礎 教案 模塊二 項目一 任務2 圓弧的加工(1-2)
- 實施甘蔗豐產(chǎn)栽培技術(shù)與病蟲害綜合防控的探討分析
- 山東省泰安市泰山區(qū)2024-2025學年上學期七年級(五四制)數(shù)學期末試題(原卷版+解析版)
- 2025年中國垃圾發(fā)電設備行業(yè)市場現(xiàn)狀及投資態(tài)勢分析報告(智研咨詢)
- 食品加工企業(yè)食品安全監(jiān)測與檢測技術(shù)
- 2025-2030年中國煤炭行業(yè)發(fā)展動態(tài)及前景趨勢分析報告
- 工程機械租賃服務方案及保障措施投標方案文件
- 2025年人工智能(AI)訓練師職業(yè)技能鑒定考試題(附答案)
- 《稀土冶金技術(shù)史》課件-中國的稀土資源與分布
- 2025屆湖北省高三T8聯(lián)盟模擬考數(shù)學試卷(解析版)
- 女職工權(quán)益保護法律知識競賽題庫(293題附答案)
- 2025年山西金融職業(yè)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 工程項目成本管理制度
- 2024年安全管理人員安全教育培訓試題及答案能力提升
- 2024屆高考適應訓練考試語文試卷(含答案)
- 《電子探針顯微分析》課件
評論
0/150
提交評論