-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
oracle快照查詢語(yǔ)句(oracle快速查詢)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于oracle快照查詢語(yǔ)句的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、oracle查詢同一條語(yǔ)句,第一次查詢很快,第二次查詢就幾乎卡死
這個(gè)時(shí)間條件的修改不會(huì)改變結(jié)果集,雖然不會(huì)改變結(jié)果集,但會(huì)改變緩存里的數(shù)據(jù)。
第二次查詢?cè)赑LSQL里面或者在程序里面查詢都會(huì)卡住,而且這種情況還是偶發(fā)的,有時(shí)候不修改任何條件連續(xù)查詢就一直很快??纯词遣皇怯胁l(fā)什么的。這種情況確實(shí)比較難判斷。
二、oracle 中見到一個(gè)查詢語(yǔ)句, select /*+ index(t1) */ from t1 ..... ,其中/*+ */是什么意思呢?
這是oracle中的高級(jí)用法,/*+ index(t1) */ 表示,在執(zhí)行查詢時(shí),強(qiáng)制使用t1表中的t1索引
三、Oracle sql 查詢語(yǔ)句 分別查詢工作日和周末數(shù)據(jù)
select count(id),sum(case when day='星期一' or day='星期二' or day='星期三' or day='星期四' or day='星期五' then 1 else 0 end) 工作日,sum(case when day='星期六' or day='星期日' then 1 else 0 end) 周末 from table
另外:我發(fā)現(xiàn)你的表中有重復(fù)值啊,這個(gè)怎么算,不管么?還是要去重?這張表(我說的是例子)似乎有點(diǎn)問題。
還應(yīng)該由其他寫法,暫時(shí)就想起這一種來。
四、oracle 高效分頁(yè)查詢SQL
因?yàn)橐粋€(gè)功能需要讀取一個(gè)大表的所有數(shù)據(jù)做業(yè)務(wù)處理,那這樣肯定不能一次性查出所有數(shù)據(jù),需要程序分頁(yè)查詢處理,模擬測(cè)試一個(gè)200萬(wàn)數(shù)據(jù)量的表發(fā)現(xiàn)耗時(shí)很久,并不是業(yè)務(wù)處理耗時(shí),而且分頁(yè)查詢耗時(shí)了。oracle的分頁(yè)查詢可能大家都知道利用rownum,而且大部分公司這種分頁(yè)都是底層封裝好的了,所有平時(shí)大家使用的時(shí)候也沒注意(這次之后特意留意了一下,我們公司就是用了錯(cuò)誤的)
這兩條查詢語(yǔ)句看著區(qū)別不大,但是性能卻差很多。經(jīng)過測(cè)試第一種性能最好,而且隨著數(shù)量的增大,幾乎不受影響。第二種隨著數(shù)據(jù)量的增大,查詢速度也越來越慢。表200W條數(shù)據(jù)的情況下,第一種查詢耗時(shí)基本是0.3s,第二種基本在1.3s以上。一個(gè)查詢足足差了一秒。別小看這1秒。200W條數(shù)據(jù)每次查詢1000條,查詢完也差了2000s=33分鐘.
分頁(yè)的目的就是控制輸出結(jié)果集大小,將結(jié)果盡快的返回。在上面的分頁(yè)查詢語(yǔ)句中,這種考慮主要體現(xiàn)在WHERE ROWNUM <= 20這句上。
這是由于CBO優(yōu)化模式下,Oracle可以將外層的查詢條件推到內(nèi)層查詢中,以提高內(nèi)層查詢的執(zhí)行效率。
對(duì)于正確有order by語(yǔ)句,第二層的查詢條件WHERE ROWNUM <= 20就可以被Oracle推入到內(nèi)層查詢中,這樣Oracle查詢的結(jié)果一旦超過了ROWNUM限制條件,就終止查詢將結(jié)果返回了
對(duì)于錯(cuò)誤有order by 語(yǔ)句,由于查詢條件where b.rowno >= 11 and b.rowno <= 20是存在于查詢的第三層,而Oracle無(wú)法將第三層的查詢條件推到最內(nèi)層(即使推到最內(nèi)層也沒有意義,因?yàn)樽顑?nèi)層查詢不知道b.rowno代表什么)。因此對(duì)于這個(gè)語(yǔ)句,Oracle最內(nèi)層返回給中間層的是所有滿足條件的數(shù)據(jù),而中間層返回給最外層的也是所有數(shù)據(jù)。數(shù)據(jù)的過濾在最外層完成,顯然這個(gè)效率要比第一個(gè)查詢低得多。
上面分析的查詢不僅僅是針對(duì)單表的簡(jiǎn)單查詢,對(duì)于最內(nèi)層查詢是復(fù)雜的多表聯(lián)合查詢或最內(nèi)層查詢包含排序的情況一樣有效。
以上就是關(guān)于oracle快照查詢語(yǔ)句相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
wordpress搭建官網(wǎng)(wordpress 搭建網(wǎng)站)
怎么把pdf轉(zhuǎn)成word文檔(手機(jī)怎么把pdf轉(zhuǎn)成word文檔格式)
wordpress官網(wǎng)是什么(wordpress官方)