<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)航:
     
    主站蜘蛛池模板: 国产精品公开免费视频| 成人黄页网站免费观看大全 | 久久午夜夜伦鲁鲁片免费无码影视| 国产亚洲精品一品区99热| 国产JIZZ中国JIZZ免费看| 成人亚洲性情网站WWW在线观看| 男女超爽视频免费播放| 亚洲成AⅤ人影院在线观看| 看Aⅴ免费毛片手机播放| 无码国产亚洲日韩国精品视频一区二区三区 | 日本亚洲视频在线| 日韩av无码久久精品免费| 久久亚洲精品成人777大小说| 亚洲视频免费在线观看| 亚洲中字慕日产2021| 嫩草影院免费观看| 妇女自拍偷自拍亚洲精品| 激情综合色五月丁香六月亚洲| 青柠影视在线观看免费| 亚洲美女aⅴ久久久91| 最好看的中文字幕2019免费| 国产成人亚洲合集青青草原精品| 处破痛哭A√18成年片免费| 免费激情网站国产高清第一页| 亚洲欧洲日产国产综合网| 美女视频黄a视频全免费网站色窝| 亚洲AV日韩AV永久无码免下载| 18禁美女裸体免费网站| 亚洲欧美日韩综合久久久久 | 亚洲精品动漫免费二区| 看免费毛片天天看| 亚洲视频免费在线观看| 成人au免费视频影院| 亚洲免费日韩无码系列| 亚洲校园春色小说| 国产精品无码一区二区三区免费| 国产中文字幕在线免费观看| 一区二区亚洲精品精华液| 最新亚洲成av人免费看| 成视频年人黄网站免费视频| fc2免费人成在线|