成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡(jiǎn)單分析Oracle Having子句

數(shù)據(jù)庫(kù) Oracle
這里介紹避免使用Oracle Having子句,Having只會(huì)在檢索出任何記錄之后才對(duì)結(jié)果集進(jìn)行過濾。這個(gè)處理需要排序,總計(jì)等操作。假如能通過WHERE子句限制記錄的數(shù)目,那就能減少這方面的開銷。

今天向大家介紹Oracle Having子句,可能好多人還不了解Where子句,沒有關(guān)系,看完本文你肯定學(xué)會(huì)SQL子句,希望本文能教會(huì)你更多東西。以下是用Where子句替換Oracle Having子句:

避免使用Oracle Having子句,Having只會(huì)在檢索出任何記錄之后才對(duì)結(jié)果集進(jìn)行過濾。這個(gè)處理需要排序,總計(jì)等操作。假如能通過WHERE子句限制記錄的數(shù)目,那就能減少這方面的開銷。(非 Oracle中)on、where、Having這三個(gè)都能夠加條件的子句中,on是最先執(zhí)行,where次之,Having最后,因?yàn)閛n是先把不符合條件的記錄過濾后才進(jìn)行統(tǒng)計(jì),他就能夠減少中間運(yùn)算要處理的數(shù)據(jù),按理說應(yīng)該速度是最快的,where也應(yīng)該比Having快點(diǎn)的,因?yàn)樗^濾數(shù)據(jù)后才進(jìn)行sum,在兩個(gè)表聯(lián)接時(shí)才用on的,所以在一個(gè)表的時(shí)候,就剩下where跟Oracle Having子句比較了。

在這單表查詢統(tǒng)計(jì)的情況下,假如要過濾的條件沒有涉及到要計(jì)算字段,那他們的結(jié)果是相同的,只是where能夠使用rushmore技術(shù),而Having就不能,在速度上后者要慢假如要涉及到計(jì)算的字段,就表示在沒計(jì)算之前,這個(gè)字段的值是不確定的,根據(jù)上篇寫的工作流程,where的作用時(shí)間是在計(jì)算之前就完成的,而Having就是在計(jì)算后才起作用的,所以在這種情況下,兩者的結(jié)果會(huì)不同。在多表聯(lián)接查詢時(shí),on比where更早起作用。

系統(tǒng)首先根據(jù)各個(gè)表之間的聯(lián)接條件,把多個(gè)表合成一個(gè)臨時(shí)表后,再由where進(jìn)行過濾,然后再計(jì)算,計(jì)算完后再由Having進(jìn)行過濾。由此可見,要想過濾條件起到正確的作用,首先要明白這個(gè)條件應(yīng)該在什么時(shí)候起作用,然后再?zèng)Q定放在那里。

減少對(duì)表的查詢:

在含有子查詢的SQL語(yǔ)句中,要特別注意減少對(duì)表的查詢。例子:

SELECT TAB_NAME FROM TABLES WHERE (TAB_NAME,DB_VER) = ( SELECTTAB_NAME,DB_VER FROM TAB_COLUMNS WHERE VERSION = 604)

通過內(nèi)部函數(shù)提高SQL效率:

復(fù)雜的SQL往往犧牲了執(zhí)行效率。能夠掌控上面的運(yùn)用函數(shù)解決問題的方法在實(shí)際工作中是很有意義的。

使用表的別名(Alias):

當(dāng)在SQL語(yǔ)句中連接多個(gè)表時(shí), 請(qǐng)使用表的別名并把別名前綴于每個(gè)Column上。這樣一來,就能夠減少解析的時(shí)間并減少那些由Column歧義引起的語(yǔ)法錯(cuò)誤。

用EXISTS替代IN、用NOT EXISTS替代NOT IN:

在許多基于基礎(chǔ)表的查詢中,為了滿足一個(gè)條件,往往需要對(duì)另一個(gè)表進(jìn)行聯(lián)接。在這種情況下,使用EXISTS(或NOT EXISTS)通常將提高查詢的效率。在子查詢中,NOT IN子句將執(zhí)行一個(gè)內(nèi)部的排序和合并。無論在哪種情況下,NOT IN都是最低效的 (因?yàn)樗麑?duì)子查詢中的表執(zhí)行了一個(gè)全表遍歷)。為了避免使用NOT IN ,我們能夠把他改寫成外連接(Outer Joins)或NOT EXISTS。例子:

  1. SELECT * FROM EMP (基礎(chǔ)表) WHERE EMPNO > 0 AND EXISTS 
    (SELECT ‘X' FROM DEPT WHERE 
    DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB')
    (低效)SELECT * FROM EMP (基礎(chǔ)表) WHERE EMPNO 
    > 0 AND DEPTNO IN
    (SELECT DEPTNO FROM DEPT WHERE 
    LOC = ‘MELB')  

【編輯推薦】

  1. 詳談Oracle LogMiner工具
  2. 揭開Oracle LogMiner之謎
  3. 簡(jiǎn)單描述Oracle Clob類型
  4. 概述Oracle 10g服務(wù)器
  5. 簡(jiǎn)介Oracle xmltype
責(zé)任編輯:佚名 來源: 計(jì)世網(wǎng)
相關(guān)推薦

2009-11-19 13:44:29

Oracle FROM

2009-11-19 16:27:23

Oracle Rown

2009-11-19 14:59:25

Oracle Wher

2010-04-02 09:55:47

Oracle遞歸查詢

2010-04-02 15:04:14

Oracle遞歸查詢

2011-07-29 15:31:52

Oracle數(shù)據(jù)庫(kù)ORDER BY

2010-04-13 17:10:59

Oracle Data

2017-03-09 13:11:48

Oracle分析函數(shù)

2010-04-12 10:54:13

Oracle性能測(cè)試

2009-11-20 11:28:36

Oracle學(xué)習(xí)過程

2009-11-19 10:43:54

Oracle Clob

2009-11-09 17:27:38

Oracle編碼SQL

2009-11-16 10:30:24

Oracle驅(qū)動(dòng)表

2011-04-13 09:45:15

Oracle存儲(chǔ)

2011-05-31 14:06:10

Oracle分區(qū)

2009-11-18 09:39:06

Oracle介質(zhì)恢復(fù)

2010-09-26 14:46:19

SQL WHERE子句

2009-09-10 17:30:15

LINQ Where子

2024-02-29 08:52:31

PostgreSQL數(shù)據(jù)分析GROUP BY

2009-09-22 17:47:03

Hibernate s
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久国产秒 | 99热在线观看精品 | 日韩精品在线免费观看视频 | 亚洲精品在线免费 | 日韩精品久久一区 | 天天躁人人躁人人躁狂躁 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 国产成视频在线观看 | 综合网中文字幕 | 亚洲综合电影 | 免费在线观看av网站 | 日韩精品一区二区三区在线观看 | 国产乡下妇女做爰 | 91精品国产日韩91久久久久久 | av一区二区三区在线观看 | 国产精品国产三级国产aⅴ原创 | 国产一区二区在线免费视频 | 黄色大片视频 | 国产亚洲欧美另类一区二区三区 | 久久首页 | 国产精品污www一区二区三区 | 中文字幕日韩欧美一区二区三区 | 人人鲁人人莫人人爱精品 | 美国一级黄色片 | 九九综合 | 欧美xxxx在线 | 色视频网站 | 免费不卡一区 | 亚洲天堂影院 | 亚洲视频免费在线 | 中文字幕 亚洲一区 | 亚洲国产第一页 | 中文字幕免费 | 美女久久久 | 精品麻豆剧传媒av国产九九九 | 国产精品18hdxxxⅹ在线 | 99久久久国产精品免费消防器 | 澳门永久av免费网站 | 精品成人免费一区二区在线播放 | 欧美亚洲日本 | 黄网在线观看 |