<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    黑豆熊——BlogJava

    面對(duì)挑戰(zhàn),我告訴自己:面對(duì)是勇氣,積極面對(duì)是態(tài)度,堅(jiān)持積極面對(duì)是毅力!

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    最新評(píng)論

    sql語(yǔ)句的執(zhí)行順序--簡(jiǎn)介

    今天上午在開(kāi)發(fā)的過(guò)程中,突然遇到一個(gè)問(wèn)題,需要了解SQL語(yǔ)句的執(zhí)行順序才能繼續(xù),上網(wǎng)上查了一下相關(guān)的資料,現(xiàn)整理如下:
    一、sql語(yǔ)句的執(zhí)行步驟:
     1)語(yǔ)法分析,分析語(yǔ)句的語(yǔ)法是否符合規(guī)范,衡量語(yǔ)句中各表達(dá)式的意義。
    2) 語(yǔ)義分析,檢查語(yǔ)句中涉及的所有數(shù)據(jù)庫(kù)對(duì)象是否存在,且用戶(hù)有相應(yīng)的權(quán)限。
    3)視圖轉(zhuǎn)換,將涉及視圖的查詢(xún)語(yǔ)句轉(zhuǎn)換為相應(yīng)的對(duì)基表查詢(xún)語(yǔ)句。
    4)表達(dá)式轉(zhuǎn)換, 將復(fù)雜的 SQL 表達(dá)式轉(zhuǎn)換為較簡(jiǎn)單的等效連接表達(dá)式。
     5)選擇優(yōu)化器,不同的優(yōu)化器一般產(chǎn)生不同的“執(zhí)行計(jì)劃”
    6)選擇連接方式, ORACLE 有三種連接方式,對(duì)多表連接 ORACLE 可選擇適當(dāng)?shù)倪B接方式。
    7)選擇連接順序, 對(duì)多表連接 ORACLE 選擇哪一對(duì)表先連接,選擇這兩表中哪個(gè)表做為源數(shù)據(jù)表。
    8)選擇數(shù)據(jù)的搜索路徑,根據(jù)以上條件選擇合適的數(shù)據(jù)搜索路徑,如是選用全表搜索還是利用索引或是其他的方式。
    9)運(yùn)行“執(zhí)行計(jì)劃”
    二、oracle 共享原理:
            ORACLE將執(zhí)行過(guò)的SQL語(yǔ)句存放在內(nèi)存的共享池(shared buffer pool)中,可以被所有的數(shù)據(jù)庫(kù)用戶(hù)共享 當(dāng)你執(zhí)行一個(gè)SQL語(yǔ)句(有時(shí)被稱(chēng)為一個(gè)游標(biāo))時(shí),如果它和之前的執(zhí)行過(guò)的語(yǔ)句完全相同, ORACLE就能很快獲得已經(jīng)被解析的語(yǔ)句以及最好的 執(zhí)行路徑. 這個(gè)功能大大地提高了SQL的執(zhí)行性能并節(jié)省了內(nèi)存的使用
    三、oracle 語(yǔ)句提高查詢(xún)效率的方法:1: where column in(select * from ... where ...); 2:... where exists (select 'X' from ...where ...); 第二種格式要遠(yuǎn)比第一種格式的效率高。在Oracle中可以幾乎將所有的IN操作符子查詢(xún)改寫(xiě)為使用EXISTS的子查詢(xún) 使用EXIST,Oracle系統(tǒng)會(huì)首先檢查主查詢(xún),然后運(yùn)行子查詢(xún)直到它找到第一個(gè)匹配項(xiàng),這就節(jié)省了時(shí)間 Oracle系統(tǒng)在執(zhí)行IN子查詢(xún)時(shí),首先執(zhí)行子查詢(xún),并將獲得的結(jié)果列表存放在在一個(gè)加了索引的臨時(shí)表中 避免使用having字句 避免使用HAVING子句, HAVING 只會(huì)在檢索出所有記錄之后才對(duì)結(jié)果集進(jìn)行過(guò)濾. 這個(gè)處理需要排序,總計(jì)等操作. 如果能通過(guò)WHERE子句限制記錄的數(shù)目,那就能減少這方面的開(kāi)銷(xiāo)

    SQL Select語(yǔ)句完整的執(zhí)行順序: 

    1、from子句組裝來(lái)自不同數(shù)據(jù)源的數(shù)據(jù);
     2、where子句基于指定的條件對(duì)記錄行進(jìn)行篩選;
    3、group by子句將數(shù)據(jù)劃分為多個(gè)分組;
    4、使用聚集函數(shù)進(jìn)行計(jì)算;
    5、使用having子句篩選分組;
    6、計(jì)算所有的表達(dá)式;
    7、使用order by對(duì)結(jié)果集進(jìn)行排序。

    posted on 2008-11-28 11:17 黑豆熊 閱讀(9654) 評(píng)論(6)  編輯  收藏

    評(píng)論

    # re: sql語(yǔ)句的執(zhí)行順序--簡(jiǎn)介 2008-11-28 13:19 charlie's logic

    thx  回復(fù)  更多評(píng)論   

    # re: sql語(yǔ)句的執(zhí)行順序--簡(jiǎn)介 2008-11-28 21:37 lyoe

    很不錯(cuò)~后面的知道,前面的那個(gè)“執(zhí)行步驟”以前還真不知道  回復(fù)  更多評(píng)論   

    # re: sql語(yǔ)句的執(zhí)行順序--簡(jiǎn)介 2009-03-06 09:11 thirdline

    很好!以前了解一點(diǎn)SQL執(zhí)行順序,現(xiàn)在全忘了.
    今天看到你的文章,真的就回憶起來(lái)了,呵呵,謝謝!
    不知道博主是否同意轉(zhuǎn)載?  回復(fù)  更多評(píng)論   

    # re: sql語(yǔ)句的執(zhí)行順序--簡(jiǎn)介 2009-06-04 09:22 thebye85

    select 是在什么時(shí)候執(zhí)行的?  回復(fù)  更多評(píng)論   

    # re: sql語(yǔ)句的執(zhí)行順序--簡(jiǎn)介[未登錄](méi) 2009-10-04 08:30 test

    @thebye85
    最后執(zhí)行  回復(fù)  更多評(píng)論   

    # re: sql語(yǔ)句的執(zhí)行順序--簡(jiǎn)介 2011-09-07 18:32 GavinMiao

    頂,不錯(cuò)!  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久综合九九亚洲一区| 亚洲午夜爱爱香蕉片| 91嫩草私人成人亚洲影院| 免费国产污网站在线观看| 国产亚洲av人片在线观看| 亚洲免费日韩无码系列| 亚洲熟妇无码八AV在线播放| 国产日韩久久免费影院 | 国产精品成人免费一区二区| 亚洲图片中文字幕| 99热在线精品免费全部my| 在线亚洲高清揄拍自拍一品区| 手机在线看永久av片免费| 亚洲综合激情五月色一区| 夭天干天天做天天免费看| 黄页网址大全免费观看12网站| 亚洲av成人一区二区三区在线观看| 美美女高清毛片视频黄的一免费| 亚洲午夜无码片在线观看影院猛| 久久国产精品免费| 久久久久久亚洲精品成人| 国产免费AV片在线播放唯爱网| 亚洲色在线无码国产精品不卡| 亚洲美女在线国产| 免费观看在线禁片| 亚洲丝袜中文字幕| 国产免费卡一卡三卡乱码| 91福利免费网站在线观看| 久久综合亚洲色HEZYO社区| 好爽…又高潮了毛片免费看| 人妻免费久久久久久久了| 亚洲AV区无码字幕中文色| 成人A级毛片免费观看AV网站| 黄网站在线播放视频免费观看| 亚洲自偷自偷图片| 91在线视频免费91| CAOPORN国产精品免费视频| 亚洲成年人电影在线观看| www亚洲一级视频com| 99re在线这里只有精品免费| 亚洲另类自拍丝袜第五页|