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