亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Oracle查詢第一行:ROWNUM機(jī)制、常見錯(cuò)誤與優(yōu)化方案

Oracle查詢第一行:ROWNUM機(jī)制、常見錯(cuò)誤與優(yōu)化方案 先問一個(gè)看起來很簡(jiǎn)單的問題在 Oracle 數(shù)據(jù)庫(kù)里怎么查出表中第一行數(shù)據(jù)這個(gè)問題我拿來面試過不少人也經(jīng)常在技術(shù)社群里看到有人問。有意思的是能一次答對(duì)的不到一半。有的人脫口而出WHERE ROWNUM 1有的人上來就寫LIMIT 1明顯是寫 MySQL 寫慣了還有人直接ORDER BY 1 FETCH FIRST 1 ROW ONLY——語(yǔ)法看著沒錯(cuò)但放到 11g 的生產(chǎn)庫(kù)上直接報(bào)錯(cuò)?!叭〉谝恍小边@個(gè)需求做開發(fā)的十有八九都寫過但它背后藏著的 Oracle 底層邏輯和那些反直覺的坑才是真正值得掰開揉碎講清楚的東西。這篇文章就專門圍繞這個(gè)問題展開先說最常見的錯(cuò)誤寫法為什么錯(cuò)再講 ROWNUM 的底層機(jī)制然后給出不同 Oracle 版本下的正確姿勢(shì)和性能優(yōu)化思路最后聊聊隨機(jī)取行、分組取首行這些進(jìn)階場(chǎng)景以及我實(shí)際踩過的兩個(gè)隱藏比較深的坑。1. “取第一行”看起來簡(jiǎn)單第一個(gè)坑就翻車先說個(gè)典型場(chǎng)景。一張訂單表orders里面有幾百萬行數(shù)據(jù)業(yè)務(wù)方說“給我查一條訂單看看字段長(zhǎng)什么樣”。這種需求其實(shí)很常見——不是為了精確取哪一條而是快速看一眼表里的數(shù)據(jù)形態(tài)。很多人的第一反應(yīng)是SELECT * FROM orders WHERE ROWNUM 1;這條 SQL 能跑也能返回一行數(shù)據(jù)但它有一個(gè)致命的問題你根本不知道返回的是哪一行。這不叫“取第一行”這叫“取任意一行”——Oracle 從表中讀到哪一行ROWNUM 就給哪一行發(fā)號(hào)先被讀到的就先拿到 1 號(hào)。而“先被讀到的”取決于執(zhí)行計(jì)劃怎么掃數(shù)據(jù)??赡苁侨頀呙璧牡谝恍锌赡苁撬饕龗呙杳械牡谝恍袥]有任何業(yè)務(wù)上的確定性。另一個(gè)更隱蔽的坑是下面這種寫法SELECT * FROM orders WHERE ROWNUM 1 ORDER BY create_time DESC;很多人寫這段代碼的本意是“先按時(shí)間倒序排好再拿第一條”但實(shí)際執(zhí)行過程完全不是這樣。SQL 的語(yǔ)義順序里WHERE的過濾發(fā)生在ORDER BY排序之前。所以這條 SQL 的真實(shí)邏輯是先隨便抓一行抓住的那行編號(hào)為 1返回然后排序——排序排的是已經(jīng)被截?cái)嗪蟮哪且恍信帕说扔跊]排。這個(gè)坑我親眼見過有人踩。當(dāng)時(shí)一個(gè)同事要查“最近創(chuàng)建的一筆訂單”寫了類似上面的 SQL結(jié)果返回的是表里最早的一條記錄。排查了半天最后發(fā)現(xiàn)根本不是數(shù)據(jù)問題是邏輯順序搞反了。再往下說還有一個(gè)寫法連語(yǔ)法都過不去SELECT * FROM orders ORDER BY create_time DESC WHERE ROWNUM 1;這個(gè)直接在 Oracle 上報(bào) ORA-00933因?yàn)镺RDER BY必須放在WHERE之后。有 MySQL 習(xí)慣的人特別容易踩這個(gè)畢竟 MySQL 里L(fēng)IMIT是放在最后的導(dǎo)致一些朋友誤以為 Oracle 也能把條件寫后面。所以你看光是“取第一行”四個(gè)字就能拆出三種完全不同的需求需求描述真實(shí)意圖常見錯(cuò)誤隨便拿一條看看取任意一行以為 ROWNUM1 是確定性的把所有行排完序后取第一條取排序后的首行WHERE 和 ORDER BY 順序搞反取物理存儲(chǔ)上的第一行按塊掃描順序取首行意識(shí)到物理順序不可控這里給新手一個(gè)最基本的建議寫“取第一行”之前先搞清楚你要的是哪種“第一行”。沒有排序邏輯的第一行在 Oracle 里沒有任何確定性依賴它就是給自己埋雷。2. ROWNUM的偽列機(jī)制為什么必須嵌套子查詢才行要徹底理解上面那些坑就得從 ROWNUM 的底層機(jī)制說起。ROWNUM 是 Oracle 提供的一個(gè)偽列它不是一個(gè)真實(shí)存儲(chǔ)在表中的列而是查詢結(jié)果集生成過程中Oracle 給每一行臨時(shí)分配的序號(hào)。聽起來很抽象打個(gè)比方你就懂了。想象一下你去銀行柜臺(tái)辦事。取號(hào)機(jī)上出的號(hào)就是 ROWNUM。但有個(gè)特殊規(guī)則只有你已經(jīng)坐到柜臺(tái)前的椅子上叫號(hào)器才會(huì)給你發(fā)號(hào)。如果你排在第 2 位但第一位辦完走了、第二位又沒來那叫號(hào)器會(huì)一直叫 1 號(hào)永遠(yuǎn)不會(huì)叫 2 號(hào)。在這個(gè)規(guī)則下2 號(hào)永遠(yuǎn)不可能被叫到——除非 1 號(hào)先被處理完。Oracle 的 ROWNUM 就是這套“坐著才發(fā)號(hào)”的邏輯Oracle 讀取結(jié)果集第一行給它標(biāo)號(hào) ROWNUM 1然后檢查 WHERE 條件如果條件不成立這一行被丟掉繼續(xù)讀下一行下一行重新標(biāo)號(hào) ROWNUM 1再檢查條件以此類推。所以WHERE ROWNUM 1能返回?cái)?shù)據(jù)是因?yàn)榈谝恍袡z查時(shí)條件成立。但WHERE ROWNUM 2永遠(yuǎn)查不到數(shù)據(jù)因?yàn)槊恳恍斜蛔x到的時(shí)候都先被編號(hào)為 1壓根等不到編號(hào) 2 就被條件過濾掉了。同理WHERE ROWNUM 1也永遠(yuǎn)返回空。這也就解釋了為什么必須先嵌套一層子查詢SELECT * FROM ( SELECT * FROM orders ORDER BY create_time DESC ) WHERE ROWNUM 1;執(zhí)行順序是內(nèi)層子查詢先把所有行排序生成一個(gè)完整的有序結(jié)果集外層查詢?cè)谶@個(gè)有序結(jié)果集上從頭取第一行。這個(gè)結(jié)果集是“已經(jīng)排序完的實(shí)體”所以第一行確定就是你要的那條。注意一個(gè)細(xì)節(jié)很多人聽說嵌套子查詢后會(huì)寫成這樣SELECT * FROM ( SELECT * FROM orders WHERE ROWNUM 1 ORDER BY create_time DESC );把這個(gè)寫法和正確寫法對(duì)比一下差別就在于ROWNUM 截?cái)喟l(fā)生在子查詢內(nèi)部還是外部。上面這種把 ROWNUM 放在內(nèi)層子查詢里的寫法又是“先取任意一行再排序”完全失去了嵌套的意義。理解了這個(gè)機(jī)制很多相關(guān)的坑都能一眼看出來。比如有的同學(xué)問“為什么我加了 ROWNUM 1 之后查詢變快了”——因?yàn)?Oracle 讀到第一行滿足條件的行后就直接停止繼續(xù)掃描了。這在全表掃描時(shí)確實(shí)能大幅減少 IO屬于物理上的短路優(yōu)化。順便說一句ROWNUM 和 ROWID 是兩個(gè)很容易混淆的概念。ROWID 是行的物理地址表示這行數(shù)據(jù)存在哪個(gè)文件的哪個(gè)塊的第幾行ROWNUM 是邏輯序號(hào)表示這行數(shù)據(jù)在當(dāng)前查詢結(jié)果集中的位置。一個(gè)對(duì)應(yīng)物理位置一個(gè)對(duì)應(yīng)邏輯順序用途完全不同排查問題時(shí)別搞混。3. 按排序取首行的完整寫法與Oracle版本差異理解了 ROWNUM 機(jī)制后下面把“排序后取首行”的各種寫法完整梳理一遍。日常開發(fā)里90% 以上的“取第一行”都是這個(gè)意思——按某個(gè)業(yè)務(wù)字段排序取最前的那條。3.1 嵌套子查詢 ROWNUM12c 之前的標(biāo)準(zhǔn)答案SELECT * FROM ( SELECT * FROM orders ORDER BY create_time DESC ) WHERE ROWNUM 1;這是 11g 及更早版本里的標(biāo)準(zhǔn)寫法也是面試?yán)镒钕M愦鸪鰜淼哪莻€(gè)。注意兩個(gè)細(xì)節(jié)第一ROWNUM 1和ROWNUM 1在這里等價(jià)工程上更推薦 1因?yàn)檎Z(yǔ)義上更明確是“取一條”不容易被誤讀。第二內(nèi)層子查詢里建議加上完整的排序條件。比如按時(shí)間排序時(shí)create_time可能出現(xiàn)相同值這時(shí)候最好追加一個(gè)唯一鍵做二級(jí)排序SELECT * FROM ( SELECT * FROM orders ORDER BY create_time DESC, order_id DESC ) WHERE ROWNUM 1;否則 create_time 相同的情況下返回哪一條又變成不確定的了。3.2 FETCH FIRST ROW ONLY12c 及以后的官方推薦Oracle 從 12c 開始引入了 ANSI 標(biāo)準(zhǔn)的FETCH FIRST子句完全就是為了簡(jiǎn)化這種“取前 N 條”的語(yǔ)義而生的SELECT * FROM orders ORDER BY create_time DESC FETCH FIRST 1 ROW ONLY;這個(gè)寫法和嵌套子查詢 ROWNUM 在大多數(shù)場(chǎng)景下性能相當(dāng)?shù)勺x性好太多——SQL 從前往后讀先明確排序再明確取幾條非常符合直覺。如果你需要取前 5 條寫法是FETCH FIRST 5 ROW ONLY。如果要取百分之一寫作FETCH FIRST 1 PERCENT ROW ONLY。如果要取第 2 條到第 3 條配合 OFFSETSELECT * FROM orders ORDER BY create_time DESC OFFSET 1 ROWS FETCH NEXT 2 ROWS ONLY;這就是 Oracle 分頁(yè)的另一種實(shí)現(xiàn)方式。提到分頁(yè)做開發(fā)的朋友應(yīng)該馬上會(huì)聯(lián)想到ROWNUM三層嵌套分頁(yè)——那個(gè)經(jīng)典寫法其實(shí)是本篇文章討論內(nèi)容的直接延伸外層固定總行數(shù)中間層算頁(yè)碼偏移最內(nèi)層排序。這里提醒一句如果你的生產(chǎn)庫(kù)還在 11gFETCH FIRST會(huì)直接報(bào) ORA-00933。遷移老項(xiàng)目代碼時(shí)這個(gè)坑很常見從 12c 代碼庫(kù)往 11g 環(huán)境回遷必須把 FETCH FIRST 改回嵌套子查詢寫法。3.3 ROW_NUMBER() 窗口函數(shù)還有一種寫法用分析函數(shù)SELECT * FROM ( SELECT t.*, ROW_NUMBER() OVER (ORDER BY create_time DESC) rn FROM orders t ) WHERE rn 1;這個(gè)寫法的通用性最強(qiáng)因?yàn)镽OW_NUMBER()不僅能取整體第一行還能配合PARTITION BY取分組內(nèi)的第一行。但代價(jià)是它需要對(duì)所有行計(jì)算序號(hào)然后才能過濾執(zhí)行計(jì)劃里通常多一個(gè) WINDOW SORT 步驟性能相比 ROWNUM 截?cái)嘁睢HN寫法放在一起對(duì)比一下寫法版本要求可讀性性能特征推薦場(chǎng)景嵌套子查詢 ROWNUM全版本中掃描到首行即停老版本兼容、追求性能FETCH FIRST12c最好同樣支持首行截?cái)嘈马?xiàng)目首選ROW_NUMBER()全版本中必須全量計(jì)算序號(hào)分組取首行等復(fù)雜場(chǎng)景從我個(gè)人的使用習(xí)慣來說12c 以上的新庫(kù)無腦用 FETCH FIRST老庫(kù)用嵌套子查詢 ROWNUMROW_NUMBER() 只在需要分組或者需要行號(hào)做二次處理時(shí)才用。4. 千萬行大表取首行執(zhí)行計(jì)劃與索引提案前面講的都是寫法層面的問題實(shí)際生產(chǎn)環(huán)境里另一個(gè)折磨人的問題就是性能。尤其是“幾千萬行大表”這種場(chǎng)景下取首行SQL 寫對(duì)了也可能會(huì)跑出讓人崩潰的執(zhí)行時(shí)間和 IO 消耗。先說一個(gè)結(jié)論如果只是“隨便取一行”WHERE ROWNUM 1加上FIRST_ROWS(n)之類的提示在大表上也能很快返回因?yàn)?Oracle 讀到第一行就停了。真正的性能坑集中在“按非索引列排序取首行”這個(gè)場(chǎng)景——它必須先把整張表的數(shù)據(jù)讀完、排完序才能找出第一條。舉個(gè)實(shí)際例子。某張流水表account_flow有 3000 萬行業(yè)務(wù)要查“金額最大的一筆流水”直接寫法SELECT * FROM ( SELECT * FROM account_flow ORDER BY amount DESC ) WHERE ROWNUM 1;我在測(cè)試環(huán)境跑過全表掃描加排序耗時(shí)接近 40 秒。這個(gè)結(jié)果不意外——排序本身要把 3000 萬行的 amount 字段全部讀出來放到臨時(shí)表空間排序性能瓶頸在 IO 和排序空間上。優(yōu)化思路有兩個(gè)方向。方向一把排序字段做成索引。如果amount上有索引Oracle 可以直接走索引的有序掃描從頭讀第一個(gè)索引條目就能拿到最大值。雖然還是 INDEX FULL SCAN但掃描到第一條就停了不會(huì)讀完整個(gè)索引CREATE INDEX idx_account_flow_amount ON account_flow(amount DESC); SELECT * FROM ( SELECT * FROM account_flow ORDER BY amount DESC ) WHERE ROWNUM 1;建了降序索引之后執(zhí)行計(jì)劃會(huì)變成 INDEX FULL SCAN (MIN/MAX) 類型的路徑執(zhí)行時(shí)間從 40 秒縮短到幾十毫秒級(jí)別。這里提醒一句索引建立后別忘了收集統(tǒng)計(jì)信息EXEC DBMS_STATS.GATHER_INDEX_STATS(USER, IDX_ACCOUNT_FLOW_AMOUNT);方向二如果業(yè)務(wù)只關(guān)心“最大/最小的某個(gè)字段值”而不是完整的一行數(shù)據(jù)直接用聚合函數(shù)更高效。比如只要最大金額是多少SELECT MAX(amount) FROM account_flow;Oracle 對(duì)MAX/MIN有專門的優(yōu)化路徑在普通 B 樹索引上做 MIN/MAX 掃描只需要讀兩個(gè)索引塊就能拿到結(jié)果連表數(shù)據(jù)都不用碰。這在高并發(fā)場(chǎng)景下是性價(jià)比最高的方案。再說一個(gè)容易忽略的執(zhí)行計(jì)劃細(xì)節(jié)。很多人以為嵌套子查詢里寫了ORDER BY子查詢就會(huì)把全部數(shù)據(jù)排完序再交給外層。實(shí)際上優(yōu)化器在特定條件下可以做排序消除sort elimination——如果排序字段本身就是索引的有序鍵優(yōu)化器會(huì)直接把排序操作省掉改用索引掃描的有序輸出。這也是為什么取首行時(shí)執(zhí)行計(jì)劃里到底有沒有SORT ORDER BY這一步很重要。用 EXPLAIN PLAN 看一眼EXPLAIN PLAN FOR SELECT * FROM ( SELECT * FROM account_flow ORDER BY amount DESC ) WHERE ROWNUM 1; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);如果執(zhí)行計(jì)劃里出現(xiàn)了SORT ORDER BY說明優(yōu)化器老老實(shí)實(shí)排了序如果顯示的是INDEX FULL SCAN (MIN/MAX)或者直接從索引取數(shù)說明走了優(yōu)化路徑。養(yǎng)成看執(zhí)行計(jì)劃的習(xí)慣比死記硬背優(yōu)化規(guī)則靠譜得多。另外涉及大表取首行時(shí)還要警惕熱塊競(jìng)爭(zhēng)。如果業(yè)務(wù)上高頻執(zhí)行“取最新一條”這類查詢所有人都去搶索引最右端那個(gè)葉塊就會(huì)產(chǎn)生 buffer busy wait。解決辦法通常是反向索引或者減少查詢頻率這屬于另一層級(jí)的優(yōu)化話題在這里先提一句供遇到性能問題的朋友排查時(shí)參考。5. 隨機(jī)行、分組首行、空表判斷幾個(gè)特殊場(chǎng)景前面講的都是“按規(guī)則取第一行”但實(shí)際開發(fā)中“取第一行”還有幾個(gè)容易被人問起、又容易寫錯(cuò)的變體我集中放到這一節(jié)講。5.1 隨機(jī)取一行如果業(yè)務(wù)需求是“從表里隨機(jī)抽一條”很多人會(huì)寫出SELECT * FROM orders ORDER BY DBMS_RANDOM.VALUE FETCH FIRST 1 ROW ONLY;這個(gè)寫法語(yǔ)義上完全沒問題大表上的性能就是另一回事了。DBMS_RANDOM.VALUE會(huì)給每一行生成一個(gè)隨機(jī)數(shù)然后全量排序代價(jià)極大。3000 萬行的大表跑一次這種查詢幾秒鐘是少不了的。大表隨機(jī)取行的優(yōu)化思路通常是先估算表行數(shù)隨機(jī)一個(gè)偏移量然后從中間位置取。但這是另一個(gè)話題了這里只想表達(dá)一個(gè)觀點(diǎn)ORDER BY 隨機(jī)函數(shù)的寫法只適合小表大表面試時(shí)答這個(gè)會(huì)被直接追問性能。5.2 分組取每組的第一行這是數(shù)據(jù)分析和報(bào)表里非常常見的需求——“每個(gè)客戶取最新一筆訂單”“每個(gè)商品分類取價(jià)格最低的一款”。很多人會(huì)用三層嵌套子查詢寫代碼又長(zhǎng)又難調(diào)試。最優(yōu)雅的做法是前面提到的 ROW_NUMBER()SELECT * FROM ( SELECT t.*, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY create_time DESC) rn FROM orders t ) WHERE rn 1;PARTITION BY把數(shù)據(jù)按客戶分組組內(nèi)按時(shí)間倒序編號(hào)最后取每組編號(hào)為 1 的行。這個(gè)寫法配合ORDER BY create_time DESC的復(fù)合索引customer_id, create_time DESC能跑出不錯(cuò)的性能。順便對(duì)比一下老開發(fā)可能習(xí)慣用NOT EXISTS實(shí)現(xiàn)同樣的需求SELECT * FROM orders a WHERE NOT EXISTS ( SELECT 1 FROM orders b WHERE b.customer_id a.customer_id AND b.create_time a.create_time );語(yǔ)義是“找一張表里不存在比我更新的訂單”——也就是每組最新的一條。這個(gè)寫法在客戶數(shù)少、每人訂單多的情況下性能可以但如果客戶數(shù)量大關(guān)聯(lián)查詢的代價(jià)會(huì)成倍上漲。我從實(shí)測(cè)來看ROW_NUMBER() 復(fù)合索引是更穩(wěn)妥的選擇。5.3 判斷空表和取首行時(shí)的邊界處理還有一個(gè)經(jīng)常被忽略的細(xì)節(jié)表里沒有數(shù)據(jù)時(shí)“取第一行”會(huì)返回什么用FETCH FIRST 1 ROW ONLY查詢空表結(jié)果集是空的程序代碼里做fetch()會(huì)返回NO_DATA_FOUND。如果你是在 PL/SQL 里處理就要考慮這個(gè)異常分支BEGIN SELECT create_time INTO v_create_time FROM orders ORDER BY create_time DESC FETCH FIRST 1 ROW ONLY; EXCEPTION WHEN NO_DATA_FOUND THEN v_create_time : NULL; END;這種寫法在取最新時(shí)間戳?xí)r很常用但它有一個(gè)隱患如果create_time本身允許 NULL排序后第一條可能恰恰是 NULL。換句話說你取到了“存在但為 NULL”的時(shí)間跟“表里沒有數(shù)據(jù)”在 PL/SQL 里表現(xiàn)完全不一樣。寫代碼判斷空表時(shí)COUNT(*)或者EXISTS更直接SELECT COUNT(*) INTO v_cnt FROM orders WHERE ...; IF v_cnt 0 THEN -- 空表邏輯 END IF;如果你是在存儲(chǔ)過程里動(dòng)態(tài)拼 SQL 取首行記住動(dòng)態(tài) SQL 和靜態(tài) SQL 的 ROWNUM 行為一致但綁定變量和字面量的執(zhí)行計(jì)劃可能不同這在 11g 的綁定變量窺探bind peeking機(jī)制下尤其要注意。6. 我用ROWNUM踩過的兩個(gè)真實(shí)坑與驗(yàn)證方法理論講完說實(shí)踐。最后分享兩個(gè)我實(shí)際踩過的坑都跟“取第一行/取前幾行”有關(guān)希望能幫各位少走彎路。6.1 坑一PL/SQL 游標(biāo)里 ROWNUM 放錯(cuò)了層當(dāng)時(shí)要寫一個(gè)報(bào)表存儲(chǔ)過程邏輯是“從子表里取最近三條記錄然后循環(huán)處理”。我一開始寫的代碼是FOR rec IN ( SELECT * FROM child_table WHERE parent_id p_parent_id AND ROWNUM 3 ORDER BY create_time DESC ) LOOP ... END LOOP;一眼看過去覺得沒問題又是過濾又是排序。但實(shí)際跑出來的結(jié)果完全不對(duì)——取到的三條根本不是最新的三條。原因就是前面講的那個(gè)機(jī)制WHERE ROWNUM 3在ORDER BY之前執(zhí)行先把物理掃描的前三條抓走了然后才排序。正確寫法還是那招——嵌套子查詢FOR rec IN ( SELECT * FROM ( SELECT * FROM child_table WHERE parent_id p_parent_id ORDER BY create_time DESC ) WHERE ROWNUM 3 ) LOOP ... END LOOP;這個(gè)坑的問題在于它不像語(yǔ)法報(bào)錯(cuò)那樣直接暴露而是數(shù)據(jù)結(jié)果不對(duì)。數(shù)據(jù)量的變化也可能讓問題時(shí)隱時(shí)現(xiàn)——小表掃描順序碰巧和排序一致時(shí)結(jié)果是對(duì)的數(shù)據(jù)一多物理順序變了就出現(xiàn)偶發(fā)錯(cuò)誤。這類“偶爾錯(cuò)、偶爾對(duì)”的問題在排查時(shí)最難定位。6.2 坑二ORDER BY 的列沒進(jìn) SELECT 列表排序被優(yōu)化器陰了一把第二個(gè)坑更隱蔽。當(dāng)時(shí)有個(gè)分頁(yè)查詢外層是 ROWNUM 控制頁(yè)大小內(nèi)層子查詢排序。為了“精簡(jiǎn)結(jié)果集”內(nèi)層 SELECT 只選了業(yè)務(wù)要展示的字段排序字段在子查詢里沒出現(xiàn)在 SELECT 列表中SELECT * FROM ( SELECT order_id, order_amount, status FROM orders ORDER BY create_time DESC ) WHERE ROWNUM 20;Oracle 文檔里明確說明ORDER BY的列需要出現(xiàn)在 SELECT 列表中否則不保證排序結(jié)果。但實(shí)際執(zhí)行時(shí)它也不一定報(bào)錯(cuò)——優(yōu)化器可能會(huì)自行處理在某些執(zhí)行路徑下排序結(jié)果符合預(yù)期換了一種執(zhí)行計(jì)劃后結(jié)果就變了。我在 19c 上測(cè)試這種寫法在某些索引組合下會(huì)出現(xiàn)返回行亂序的情況排查了很久才定位到是排序字段被優(yōu)化器“優(yōu)化”掉了。解決辦法有兩個(gè)一是把create_time也放進(jìn)子查詢的 SELECT 列表二是設(shè)計(jì)復(fù)合索引(create_time DESC, order_id)讓排序完全走索引。6.3 驗(yàn)證寫法正確性的通用方法最后分享一個(gè)通用的驗(yàn)證思路。不管用哪種寫法寫完后先問三個(gè)問題SQL 的語(yǔ)義執(zhí)行順序是什么WHERE 過濾、排序、行數(shù)截?cái)嗄膫€(gè)先哪個(gè)后Oracle 里 WHERE 一定在 ORDER BY 之前窗口函數(shù)在 ORDER BY 之后別搞反。執(zhí)行計(jì)劃里有沒有多余的全表排序EXPLAIN PLAN 看有沒有 SORT ORDER BY有就說明排序躲不掉如果業(yè)務(wù)能接受沒排序的“第一行”直接 ROWNUM1 完事性能差著兩個(gè)數(shù)量級(jí)。結(jié)果是不是確定性的連續(xù)跑三次如果三次返回一樣的行才算穩(wěn)定。如果業(yè)務(wù)對(duì)“第一行”的定義模糊干脆把結(jié)果設(shè)為任意行并讓產(chǎn)品接受這個(gè)現(xiàn)實(shí)。這三個(gè)問題想明白基本上“取第一行”相關(guān)的 SQL 就不會(huì)再翻車了。最后再順手分享一個(gè)小筆記Oracle 的OFFSET ... FETCH語(yǔ)法其實(shí)從 12c 開始一直沿用到現(xiàn)在如果你開發(fā)環(huán)境是 21c 或 23ai可以放心用如果你要兼容 11g 的老生產(chǎn)環(huán)境嵌套子查詢 ROWNUM 才是那塊壓艙石。碰到取首行需求先問清楚業(yè)務(wù)意圖再選對(duì)應(yīng)的 SQL 形態(tài)這樣寫出來的查詢既高效又經(jīng)得起推敲。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
嫩草影院性色| 午夜精品久久久99热蜜桃的功能特点| 亚洲中亚日激情视频| 丰满人妻区一区二区三| 大香蕉 222| 天啪| 龙兴卡官方查询| 乱伦一区二区三区‘| 0755午夜福利视频| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 亚洲色吧网| 琪琪精品免费一区二区三区 | 翔田千里无码一区| 99综合视频| 亚洲电影中字一区二区| 人妻偷拍一区二区三区| 亚洲人妻中文在线视频| 五月丁香在线| 99999亚洲| 欧洲熟妇xxXx欧美老妇裸体| 久久精品国产97欧美精品亚洲 | 国产精品亚洲一级av第二区| 后入人妻无码| 无码九九九九| 美女91在线| 男人天堂免费| 日韩欧美麻豆 | 日韩精彩视频| 激情啪啪视频| 欧美人妻熟女在线| 老熟妇一区二区三区| 欧美色图天堂网m| 久插不卡| 91天天爱| 久久99九九九九6666免费观看软件| 国产一区在线免费播放| 青女偷拍网| 色啪网| 97欧美视频| 大香伊人在线一区| 偷窥自拍亚洲| 97国产精品久久久久| 亚洲少妇激情一区二区三区| 四虎免费视频| 性高潮久久久| 亚洲视频精选| 视频一区二区免费在线| 欧亚性爱在线视频| 成人三级片无码| 国产尤物AV尤物在线观看不卡| 国产男人又猛又粗又爽| 婷婷五月天色色| 中文字幕啊啊啊在线观看视频| 性爱动态120秒| 奸色色 男人天堂 天天射| 久久极品一区二区| 伊人国产av| WWW.加勒比人妻一区不卡.com| 91久久18禁| 日欧毛片久久| 欧美日韩久久精品爱爱| 色哟哟AⅤ| 亚洲精品国产熟女久久久久久| 激情接吻视频久久久久久| 国产 日韩 欧美一区| 女人与公拘交酡2020视频| 综合亚洲欧美精品日韩?v| av三级电影在线播放| 97天天在线| 天天做日日做天天欢。| 99久久久无码| 精品久久久久9999| 夜夜嗨一区| 少妇三p| 乱抡国产91| 欧美1区二区三区公司| 精品毛片av一区二区| 欧美性巨大╳╳╳╳╳高跟鞋| 超碰av在线| 奸色色 男人天堂 天天射| 天天夜夜久久| 午夜美女诱惑电源网| 超碰在线一区二区三区| 狠狠狠狠狠| 国产自产91区13区| 亚洲欧美伦综合| 成人a v在线播放免费| 高清无码 国产精品| 日韩一级片| 激情图片亚洲色图| 久草这里只有精品| 9999久久久久| 试看60秒| 天天干天天舔| 五月丁香影院| 久久久久久久久女黄| 欧美性爱一区二区| 亚洲91极品| 亚洲天堂人人妻| 综合激情一一91| 青青在线视频免费| 日本亚洲熟女视频| 97天天操天天干| 97碰碰色| 亚洲欧美日韩精品久| 精品久久久av| 东京太热男人的天堂久久久| AA特级绝黄| 91色综| 青青草五月份天| 超碰免费人妻人人| 动漫片子网站3黄| 大香蕉2017| 自拍偷拍国产欧美日韩韩| 91精品久久久久久77777| 麻豆国产成人精品| 亚洲黄片免费在线播放| 夜夜嗨一区二区| 欧美综合自拍亚洲综合图| 26uuu久久| 婷婷五月天激情网| 一区二区三区麻豆| 九九久久99| 久久熟女嫩草成人片免费| 精品午夜福利国产一区二区在线观看 | 国内91熟女人妻丝袜天天精品视频在线| 欧美综合 站| 亚洲春色一区二区三区| 中文字幕视频在线观看一区二区| 999综合网| 丁香五月婷婷基地| 九九碰九九爱97超| 色眯眯av| 亚洲中文日韩精品| 久久东京热成人| 探花精品视频| 日韩一级二级三级免费看完整版| 亚洲 欧美 中文 日韩超碰 | 青青草日韩无码| 亚洲黄色网址| 99精品成人免费看| 欧美成人精品一区二区男人蜜臀| 大香蕉免费乱伦视频| 欧美第二页午夜| 殴美在线AⅤ| 亚洲熟妇综合久久久久久| jk白丝没脱就开始啪啪| 久久华人网| 欧美日韩国产色图在线| 青青操在线视频| 色色五月天激情| 人人妻人人爽一区二区三区| 吻戏激情性巴克| 亚洲超碰97| 欧美综合加勒比在线| 一区二区精品日韩欧美在线观看| 九九av| 欧美日韩操逼动图| 国产路线专区| 黑人中出21连凳花野真衣| 亚洲无无码αⅴ每日更新| 欧美爆操91| 少妇超碰在线| 91成人国产综合久久精品蜜月| yy少妇精品久久| 四虎免费在线播放| AV一起草在线| 黄色十八禁| 偷拍伦理视频| 国产91乱伦| 日日骚一区二区三区| 色综合中文字幕不卡| 少妇一级婬片免费放一级a性色.| 欧美97免费| 欧美操逼熟女| 超碰色97| 成人一二三区| 亚洲码和欧洲精品激情系列| 欧美黄色大香蕉一区二区| 九九九草| 国产乱码精品久久久久久| 操操碰| .精品人妻一区二区三| 啊啊啊啊啊舒服| 丰满人妻一区二区三区四| 国产精品爽爽v| 酒色综合网| 亚洲视频二区| 99国内精品| 亚洲黄日韩无码专区| 在线人人人人人人精品超| 天天看天天日| 少妇久久久久久久| 91色鬼| 妇女性内射冈站HDWWWCOM| www久久精品| 天天看少妇| 午夜黄色免费在线观看| 黑人美精品 A片| 青娱乐国产剧情av一区| 国产精品久久久久久久久久久久| 久久久久久中文| 欧美乱妇狂野欧美在线视频| 日韩人妻无码精品系列| 蜜桃视频精品一区二区三区| 熟妇最新先锋一二三区| 国产亚洲在线观看| 日韩一级片| 国产 亚洲 丝袜 制服| 家庭乱伦国产精品| 性久久| 欧美日韩性爱电影在线| 精品欧美老熟女一二区| 岛国爱情动作片在国产AV无码专区亚洲AV漫画| 偷偷人人精品女女久久| 日韩9999| 91欧美高清| 色人久久| 丰满人妻-区二区三区免费| 五月丁香婷婷色| 99成人| 九九久久精品| 9九九九九视频在线观看| 亚洲日韩精品在线播放| 亚洲Av无码成人精品国产| 国产乱人伦AVA麻豆软件.| 日本操色导航| 强奸乱伦动态污图免费 | 欧美另类综合久久| 最新国产亚洲精品精品国产亚洲综合| 国产美女高潮叫床视频| 中文日本免费高清| 怡红院一区二区熟女人妻| 亚洲日韩精品在线播放| 日欧美色| 人妻熟妇久草在线| 哑洲在线| 久九九九| 亚洲天天做日日做天天谢日日| 1769国内精品视频| 无码逼| 久操不卡视频| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 人妻精品综合中文字幕在线| 国产美女口爆吞精| 天天综合站| 日本大香蕉综合网红本杳社区| 91精品人妻一区二区三区蜜桃| 国产精品第一页国产大屁股视频免费区| 好爽视频在线观看视频| 国产一区二区免费福利片| 精品视频一区二区| 日韩性爱视频免费在线| www色日本| 五月丁香婷婷啪啪| 欧美中字二区| 伊人欧美大香蕉视频| 亚洲风情在线观看| 性老妇一区二区三区| 91人人臊| 无码操逼视频一下| 东京热,男人的天堂| 桃色六月天| 国产又色又粗又黄又爽| 91亚洲人| 爱丝福利| 91天堂视频| 在线观看精品国产免费| 欧美αv.com| 男人天堂资源| 中文无线日韩一区| 久久精品99久久久久久| 试看福利| 99久在线精品99re8a| 95人妻爽爽人人做人人澡| 超碰在线观看av不卡| 伊人操| 曰韩少妇无码| 亚洲春色一区二区三区| 久久系列| 97久久超碰国产精品| 国产精品第二页| 992这里有精品| 亚洲人妖网| 粉嫩久久久极品| 日韩免费簧片| 色婷视频| 国产一级特黄大片处女| 亚洲高潮少妇| 天天天堂影视日韩亚洲91| 啊啊啊啊啊啊好多水| 欧美v亚洲v日韩v最新在线二区| 强上我不卡卡| 日本操逼视频免费| 大鸡吧尹人在线| 91亚洲图片| 中国乱伦一区二区| 国产欧洲精品亚洲午夜拍精品| 久久国产在线一区二区| 久久秀这里有精品| 神马久久午夜| 毛片中心9视频99| 鸥美中出| 黄色AV影视| 青娱乐91| 激情五月综合| 欧美Ⅴ性爱| 丝袜制服字幕在线| 九九AV| 蜜臀久久99精品久久久老,,| 家庭乱伦国产精品| 国产成人AV麻豆| 国产三级在线现体验区| 欧美猛交黑寡妇中文字幕| 伊人网免费视频| 性欧美91| 日韩精彩免费| 欧美激情性久久久久久| 欧美激情久久久久| 亚洲最大AV网| 欧美在线播放| 超碰97首页| 五十路三级片| 天美久久久久| 超碰公开久久网| 翔田千里AV无码秘 三区| 手机看片1025| 超碰色老头| 国产精品熟女AV中文字幕在线播放| 嗯嗯嗯啊啊啊操的我好爽| 少妇干B| 国产精品天堂| 超碰成人国产| 美女爽爽爽刺痛洞洞| 国产版a级片直播在线| 亚洲小说视频| 观看视频图片一区二区三区| 日韩成人大片在线观看| 国产精品乱码久久| 久久久久久久久久久久久久久久9| 欧美精品1区2区3区| 深喉吞精| 综合网欧| 欧美另类色图片| 最新av网站在线观看| 欧美人妻另类在线| 九色 人妻 大香蕉| AV免费在线播放一区| 清纯唯美综合亚洲| 亚洲涩涩| av婷婷色网| 一级做a爰片性色毛片久久| 91无码人妻精品一区二区三区蜜桃| 人人天天欧洲| 高跟丝袜AV专区国产| 俞拍久久国应视频| 神马久久69| 六月丁香五月婷婷| 久久夜黄色无码A级大片| 婷婷人妻激情| 久久视频,这里只有精品| 美女超碰978| 操逼片国产| 欧美一二三| 青青草狠狠撸| 丰满少妇一区二区三区四区观看| 五月丁香影院| 国产h片在线观看视频| 亚洲自拍97| 热的中文 热的有码 热的国产| 国产后入精品| 亚洲人妻av| 在线国产福利网址导航| 青春草莓视频在线观看网址| 9997se| 欧美色图私拍91| 婷婷丁香五月综合| 亚洲第一综合| 久久精品国产免费观看99| 精品国产三级av韩国在线| 97jingpin| 大香蕉一人在线| 水野优香在线观看| 91九色精品熟女内射| 91人妻中文| 国产精品麻豆免费视频| 亚洲春色一区二区三区| 欧美黄页| 久久大黄片| 少妇熟女一区二区三区| 91观看 国产白丝| 97超碰色情| 日韩成人人妻网站| 精品人妻一区二区三区夜夜| 91爱做| 欧美大片天天看| 国产精品。| 中文字幕精品人妻丝袜| 99国产天美| 欧美三级一级| 五月天伊人| 色诱中文字幕| 品亲网欧美品亲网| 干美女人妻| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 国产久久日韩网站导航| 天天天天天超碰| 加勒比海成人视频网| 色色色色色色色色综合| 欧美专区17页| 日韩三级av片| 久操精品| 亚洲日韩精品一区视频在线| 大色综合网| 国产 日韩 另类 视频一区爱| AV和黑人在线播放| 国产成人亚洲精品自产在线| 亚洲限制级在线| 射欧美综合| 91少妇香蕉久久精品| 日韩人妻精品| 啊啊啊好大好深| 狠狠爱大香蕉| 欧美十八禁视频| 国产97视频免费观看| 另类专区在线观看| 青娱乐导航AV| 日韩中文9| 91欧美大片| 日本成人A片免费看| 免费的黄片wwwwww| 精品久久久九九九孕妇| 尤物AV免费网站| 97精品视频| 精品国产一区二区三区香蕉欧美| 91|九色|国产熟女| 国产白嫩精品久久| 性感美女91影视| 欧美一区二区三区不卡高清视频| 色综合久久88色综合久久天天| 国产A v无码专区| 九九热九九热| 97人人色| 大香网站| 九九久久国产精品| 中文字幕激情小说| 日本色色视频网站| 国产福利精品最新在线| 色五月第四色| 欧美劲爆第一页| 国产网红精品| 久久久性爱视频| 久久久久熟女| 伊人影院综合是一个与深夜成人在线| 中文字幕av久久爽Av| 美女十八禁| 天天搞在线综合网| 国产AV人人 夜夜人人澡| 亚洲日韩国产精品| 一区二区娱乐网站| 97资源免费视频| 欧美日韩午夜精品一区二区三区| 婷婷成人五月天| 色偷偷超碰亚洲| 大香蕉免费3| 丰满人妻一区二区三区免费,| 白丝在线一区| 中字幕人妻一区二区三区| 日韩三级视频一区二区三区| 国产成人AV麻豆| 97网色| 色色色色电影网| 插入粉嫩少妇视频| 久久精品国产亚洲AV无码做| 91/欧美| 国产高清视频无码在线| 国产久久视频| 天天看天天日天天操| 免费黄色片子| 亚洲毛片久久| 国产一区96在线| 97超碰9| 亚洲成人网站在线观看| 精品人妻一区二区三区免费视频| 伊人五月天| 夜夜性| 亚洲人妻AV| 天天影视综合色| 强奸乱伦麻豆| 97视频免费在线| 国产亚洲禁久一区二区 | 天天懆天天日| 亚洲精品一区二区免费在线观看| www.久久最新地址| 在线 欧美 亚洲| 操逼网站视频漫画国产| 亚洲成人帖图| 人人乐大香蕉| 亚洲,日韩,欧美,成人播放| 97色欧州| 国产精品宅男免费| 视频在线97| 看日韩美女二区三区免费操逼视频| 久久久久久久| 日日干夜夜操视频h| 国产1024在线播放| 欧美亚洲se91| 亚洲各类熟们中文字幕| 伊人骚琪琪亚洲天堂网站| 啊啊啊啊啊在线观看网址 | 天天影视色香色欲| 成人无码在线视频网站| 精品人妻一二三四区视频| 亚洲成熟国产精品美女| 人妻丝袜日本| AV丝袜少妇| 国产精品无码在线| 秋霞网无码| 精品妇操一区二区三区| 91熟女熟妇视频网站| 国产日韩欧美中文在线播放| 97色操| 蜜臀亚洲中文| 影音先锋乱| 久久少妇| 激情综合网一盗摄| 日本精品第一视频在'| 国产日韩精品suv| Julia Annxxxxx| 中文字幕日韩综合| 精品偷拍13p欧美dodk视频| 九七色图| 丝袜美腿射精91| 亚洲色图激情小说| 日本国产高清色www视频在线| 99re28在线观看| 色欲人妻一区二区在线| 天美AV片| 手机看片1024你懂的国产| 国产成人在线观看网址| 伊人网在线点播| 亚洲欧洲色情高清| 台湾佬激情综合| 黑人无码一区二区| 免费观看性欧美一级| 亚洲人妻精品一区二区| 大肉棒导航| 99热免费精品| 99热色这里只有精品| 激情五月天社区| 黄色视频60分钟| 大学生美女口爆| 密臀在线视频| 国产视频97| 亚洲国产青青| 好好的日:com久久九九| 国产AV天美| 久久本道| 97超碰69| 亚洲日本韩国极品一区二区| 亚洲天堂,男人| 国产伦精品一区二区三区在线观| 黑丝自慰喷水网站| 奇米狠999| 强奸乱伦大香蕉网| 国产成人免费观看在线视频| 草草影院最新网址| 色呦呦呦在线观看视频| 最新三级网址| 亚洲一区二区精品福利| 国产精品999zyz| 国产熟女完整版中字| 不卡中文字幕aⅴ在线| 97亚洲精品| 欧美97| 东京热一区二区中文字幕| 美欧色综合| 国产强奸无码乱伦| 亚洲国产成人7777| 国产AV毛片| 亚洲精品第一| 思思热免费视频观看| 立川理惠无码一区二区| 日本天天操| 性色一线| 欧美日韩99精品麻豆传媒| 中文伊人大香蕉视频| 国产精品久久久久久夜夜夜| 图色综合网| 69久久久久久久久久久久久| 久久久精| 97免费在线观看| 日本操逼视频免费| 二男一女成人A片| 亚洲色诱惑| 韩日精品四区| 东北女人| 精品久操| 日本精品一级二级三级| 久久东京伊人一本到鬼色| 亚洲性爱无码乱伦av| 99久久99九九99九九九| 99re9| 香蕉热人人精品| 色婷婷五月综合激情中文字幕| 丁香五月影院| 最新av在线| 欲综合网| 黄色激情电影在线观看| AV中文在线可看| 大香蕉伊在线久草麻豆天堂故事| 日韩干B| 欧洲在线性爱视频| 女人双腿搬开让男人桶| 91女网站| 日本道人妻久久久在线不卡色视频| 无码高清少妇久久| 久久综合五月天| 中文幕97| 少妇久久久| 亚洲欧美在线观看2021| 78久久久| 91精品国产一区三一| 亚洲性爱成人| 亚洲精品一区中文字幕乱码| 日韩 成人 有码| 600国产精品视频| 亚洲成a人片在线观看中文!!! | 亚洲国产成人精品女人久久久| 91精品国产日韩欧美综合| 人妻加勒比东京热| 97久久国产亚洲精品超碰热| 夜夜操美女| 夜夜一区二区| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 五月丁香激情四射| 欧美精品第3页| 熟妇国产免费一区| 熟女激情综合网| 色婷五月天| 国产超碰欧美| 亚洲高清无码在线桃色| 婷婷色香| 老司机午夜精品视频| 天天综合日韩网| 啊啊啊啊无码| 日欧操屄视频| 蜜区区视频79| 亚洲黄色a级片| 熟妇高潮精品一区二区三区下载| 国产精品白领在线观看| 狠狠躁AV| 亚洲欧洲av影音| 日韩素人无码一区二区三区三州| 亚洲色图A| av资源在线观看少妇| 亚洲精品人伦一区二区| 在线观看亚洲专区| 久久久专区| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 福利五区| 国产激情在线观看| 九九久久国产精品怡红院| 成人午夜小视频手机在线看| 91少妇通奸网站| 狠狠激情综合狠狠操中文字幕| 人妻超碰青青草98| JIZZJIZZ国产精品喷水| 久久精品国产97欧美精品亚洲 | 日韩av熟女一区二区三区成人| 亚洲综合第一页| 啊啊啊用力在线观看| 中文字幕丰满子伦无码专区在线视频最新| 五月天婷婷色| 日韩亚洲欧美中文字幕| 精品人妻一区二区免费蜜桃| 另类小说综合网| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 校园激情狠狠四射| 亚码激情| 无码免费在线观看黄色片| 久久国产对白激情浪潮| 超碰在线香蕉| 四虎免费在线播放| 97超碰国产亚洲精品资源| 在线视频 亚洲精品| 亚洲第一二区另类图| 中文字幕123| 啊啊啊好大好深| 久久久久密| 2018天天干在线视频| 欧美 日韩第一性色| 久久五月份| 国产美女裸体秘 永久无遮挡| 一区二区三区蜜桃成人撸久久东京热| 亚洲av影院在线观看| 久久伊人影院| 国产精品久久久久久久久久久久久久久久久久| 岛国片国产成人亚洲播放| 91丝袜人妻| 夜夜操av亚洲一区二区| 亚洲av影院在线观看| 九热久| 久操av在线| 激情四射婷婷四五月天| 再深点灬舒服灬太大了添视频| 精品国产乱码久久久影院| 婷婷伊人一区| 手机看片1025| 一本色道久久天天射天天干| 一区二区三区四区理论片| 日日夜夜青青草母狗| 亚洲另类在线观看| 又粗又长又爽在线观看| 久一区久久蜜桃| 东京热不卡视频| 玖玖97综合| 人人插人人摸人人| 日韩人妻有码免费视频| 欧州91高潮| 肉丝中文无码高清| 久久只有精品一区二区三区| 国产精品电影| 无码乱人伦中文视频| 97超碰人人模人人拍人人| 亚洲中文字幕熟女少妇一区二区| 亚欧美综合网。| 人妻在线中出视频| 色色无码| 熟女视频久久| 久久精品国产亚洲AV嘿嘿| 欧美日韩国产成人高清| 亚洲加勒比| 日日夜夜骑| 青青青草伊人精品| 日韩噜噜69| 99热aaa| 九九玖玖精品| 久久极品一区二区| av优播| 99在线免费视频| 免费看日产一区二区三区| www.黄色在线| 日本三级A片网站com| 人人操人人摸人人骑| 99re99| 一区二区高清视频| 97综合在线| 成人性交免费视频| 91亚洲网站| 欧美se综合| 亚洲图片小说欧洲| 国产白丝网站| 夫妻天天操岛国视频| 91女优在线观看 | 色乱二区| 国产精品一区二区三区,亚洲综合| 黄片免费视频2019| 99久久精品无码一区二区毛片免费| 亚洲国产美女久久久久| 波多野结衣之双飞调教在线播放 | 欧美 中文字幕 一区| 人妻精品4K4K4K4K4| 麻豆久久久久久久久丝袜 | 亚洲天堂电影精品一区| 国产精品一二三区福利| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 97欧美色| 久久久久久久久久久久97| 大香蕉视频啪啪啪啪| 午夜爽爽爽| 日本视频在线中文字幕| 亚洲小电影免费涩涩成人在线高清 | 美女网站91| 日产操逼| 日韩精品在线视频在线观看| 国产精品极品美女视频| 一个人免费HD91视频| 色啪网| 999日韩中文精品观看视频。| 亚洲老熟妇xxx| 久久一二三四不卡| 精品无码产区一区二| 欧美日韩国产精品久久色婷婷| 97免费视频在线| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 99热婷婷| 久草毛片电影怡| 国产精品97超碰| 97色碰| 欧美人与性动交a美精品| 久操热线| 吉川爱美98堂在线| 人妻激情在线视频| 五月天伊人网| 婷婷丁香九月| 内射白嫩美女| 人妻熟女一区二区| 加勒比海色香蕉婷婷| 草草影院最新网址| 草草影院在线视频| 天天综合网~91综合网| 日本亚洲嫩草影院啪啪| 中文字幕AV乱伦| 五月丁香影院| 日韩中文字幕宗合在线| 亚洲色图欧美色图另类图片| 亚洲五码一区二区三区| 午夜男人一级A片7777| 欧美日韩亚洲天堂网| 97免费视频在线| 亚州免费啪啪视频| 性色avv| 蜜区区视频79| 先锋色眉乱伦资源| 天色综合网| 超碰地址久久| 人妻乱仑一区二区三区| 日日AV加勒比| 91香蕉国产尤物视频| 色婷婷五月综合激情中文字幕| 96国产污污污丝袜| 日韩视频中文字幕| www.zbzhongsen.com| 亚洲鸥美色图| 人妻丰满熟妇一区二区三| 亚洲图片 91| 欧美综合色| 国产性爱乱伦AV| 啊啊啊啊啊啊好湿好爽视频| 97资源久久| 日韩A优精品在线观看| 99999精品成人| 国产精品夜夜夜| 成人aⅴ一区二区三区| 天天日日本| 欧美性第一页| 亚洲 日韩 欧美 国产综合体| 色哟哟av| 亚洲一区二区性爱电影| 欧美一级A片在线看视频性色| 沈阳熟女高潮对白视频| 久久久九九网站| 亚洲熟女av中文字幕| 亚洲精品亚洲人成人网| 久久9999| 婷婷99狠狠躁天天躁| 熟妇人妻一二三区免费| 久99| 综合亚洲欧美| 青青草九九九九九| 国产色产精品在线观看| 亚洲91网。| 26uuu国产亚洲综合| se,,,亚洲欧美| 中国国产精品一区视频| 久久熟女久| av在线免费一区二区| 午夜福利在线合集| 精品性爱无码在线播放| 国产9熟妇视频网站| 日韩啪啪网| 日比av无码| 日日干夜夜干| 欧美96在线|欧| 熟女精品一区二区三区| 中文字幕后石码三区四区| 伊人综合色网| 成人免费毛片| 成人日本精品九区| av无码av无码专区| 91熟女视频网| 日日狠狠久久偷偷色综合免费| 蜜臀久久久99久久久久| 久妇网| 久久久久久久亚洲Av无码| 日韩有码回春沙龙第一页| 欧美日韩操逼嗦吊| 女优大全 - 91n| 天天干一区二区| 国产 热久久久久国产精品| 尤物视频新赏网鲜网色诱网| 亚洲日韩一区电影| 26uuu久久| 久久久久久久久久久久九| 可以免费看黄片的视频| 欧美97se| 久久的网站啊啊啊啊啊| 免费操逼视频下载| 校园春色五月天| 极品后入免费视频| 日韩有码免费视频| av在线播放国产一区| 欧美在线|亚洲| 天天肏美女| 成人性爱视频在线看| 美女91| 好屌色综合| 久操操| 91人妻最真实刺激绿帽| 天美传媒精品久久视频| 韩国女主播青草在线| 激情综合五月丁香| 三级激情网站| 91天堂| 亚州色图片在线色| 99爱久久视频频| av天堂5| 最新av中文字幕高清| 久久久女人| 欧美一二在线| 欧美日韩国产中文精品字幕自在自线,| 伦伦成年午夜免费视频| 超碰2017| 极品一区二区三区免费| 亚州乱码中文字幕综合久久久| 天天干天天做| 亚欧视频在线| 无码精品久久久久久亚洲| 色五月激情AV在线| 色婷婷蜜臀av| 精品久久久中文字幕不| 无码伊人久久大杳蕉中文无码| 欧美A片中文字幕| 午夜αv| 91高清欧美| 后入合集| 中文一区二区| 国产熟妇一区二区| 九九热九九热| 亚洲最新中文字幕免费| 免费av高清无码| 青青在线视频日韩欧美| julia国产在线| 男女激情中文字幕| 青青操97| 欧美亚洲综合色| 亚洲美乱| 人妻啊啊人妻啊| 色婷婷久久| 99久久网站| 欧亚在线视频| 女人高潮抽搐喷水视频网站| 91社区拍啪人妻| 天天操人人操狠狠插| 中文字幕第9页萱萱影音先锋| 国产97在线播放| 欲色综合| 99少妇| 色97欧美| 欧美92| 日本一道在线播放高清| 久久中出| 男啪女色黄无遮挡免费观看| 九七超碰| 亚洲黑人在线| 亚洲97成人在线观看| 亚洲欧美一区二区网址| 中文字幕av亚洲精品| 人妻精品视频一区二区三区| 岛国福利在线精品播放| 亚洲欧洲日韩天堂av| 色在线亚洲视频www| 金莲网址| www.91逼逼.com| 在线啊v一区| 91啪啪| 美女露胸露屁股| 欧美色九九九| 亚洲男人天堂视频| 久热精品在线| 99999re| 日本人妻丰满熟妇久久久久久| A 天堂| 亚洲 自拍偷拍 欧美| 蜜乳AV色欲AVAV无码| 国产99热| 日韩欧美视频青青| 欧美日韩大陆黑人少妇99| 少妇精品久久久| 丝袜视频网国产90| 精品国产AV一区天美传媒| 操婢日韩| 久久亚州精品成人Av无| 日韩亚洲中文字幕在线| 夜夜嗨一区二区| 国产亚卅97| 欧洲一区二区三区四区在线观看| 78精品| 欧美人与性动交a美精品| 日本护士高潮| 99热免费| 精品一区二区三区蜜桃臀www| 亚洲色阁| 国产传媒操逼视频| 大香蕉123| 亚洲www91| 超碰九7| 性开放中文AV高清无码免费看| 色噜噜狠狠色综无码久久合欧美| 黄色高清久久无码依人| 操熟女91| 天天艹天天日| 99热这里只有精品99| 亚洲免费97免费| 最新制服中文第一页| 九九视频黄色片| 天天日天天爽| 亚洲欧美setu| 舔足天天操天天射| 成人av动漫在线观看| 日本丝袜美腿人妻九九| 婷婷人妻激情| 国产精品久久久久久无码红治院| 91色碰| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 欧美毛片在线网| 加勒比综合a∨| 91色人妻| 精品久久久无码| 色九九久九九| 亚洲成人一区二区精品| 色女网日韩| 国产视频第二页| 丰满的三级少妇欧美久久久| 亚洲视频二区 | 中文字幕高清精品一区| 天天日B狠狠操| 一本久久久精品| 久草网站免费在线观看| 国产日韩人人| 欧美黄色手机在线观看| 99视频内射三四| 九一国产精品| 肉嘟嘟www视频在线观看高清| 欧美性色综合网| 丰满熟女一区二区三区在线播放| 国模精品娜娜一二三区| 国产日产欧产美韩系列麻豆免费| 精品毛片av一区二区| 欧美午夜色妇色鬼| 日韩三级伊人| 日韩/97| 男插女青青影院| 日韩美脚一区二区网站| 亚州色图欧美色图| 五月天大香蕉| 四虎精品永久在线观看| 亚洲综合中文字幕有码| 超碰到97情色| 精品一区二区成人| 超碰性爱97| 少妇高潮流水av免费| 另类av综合久久| 亚洲熟女精品| 校园春色中文字幕AV| 国产成人无码啪| 大干人妻| 精品少妇一区二区三区在线视频 | 色婷婷丁香五月| 亚洲色图A| 日本三级韩三级99久久| 国产97/欧美| 91久热| 男人的天堂2019| 日韩熟女精品无码专区一区二区| 人人贴人人摸| av久日| 国产精选三级在线观看| 亚洲天天更新| 色一射色一射| 五十路六十路七十路熟婆| 校园春色亚洲无码| 久久精品国产亚洲AV高级北京| 死我十八禁| 99在线精品观看99| 亚洲国产成人精品999| 嗯嗯啊好大| 国产一区二区av综合| 欧美同性恋 的搜索结果 - 91n| 免费观看啪视频| 性综合网| 亚洲欧美大香蕉| 欧美性爱第一区| 天天干夜夜| 久久久98网站免费视频| 国产精品无码av嫩草| 久久女女| 亚洲色图91欧美日韩| 日韩亚洲中文字幕在线| 9I1性色影院| 欧美18禁91| 精品一区二区成人| 无马一区二区| 五月天伊人| 一级成人性爱| 9久久久久久| 久久熟女人| 操逼啊啊啊91| 精品久久97| 东京热不卡视频| 色综合五月天| 亚洲小电影免费涩涩成人在线高清 | 97超碰日韩| 97一区二压| 日本日逼视频网| 亚洲乱色熟女一区| 91久久久久| 久久色人体 | 亚洲熟女乱色| 久久香蕉国产线看观看猫咪av| 97干色| 97鸡把在线视频| 96免费视频在线| 综合色图区| 91人妻素女| 国产美女在线精品免费看| 久久精品国产97欧美精品亚洲| 白嫩嫩一区| 国产精品免费视频不卡| 午夜亚洲WWW湿好大| 色777999综合| 亚洲国产丝袜在线观看| 女人的久久久| 国产福利影视| 午夜福利精品| 俺去啦俺来也久久综合 | 天天摸天天插天天日| 白嫩国模丰满一二三区| 大香蕉一区二区在线观看.| 啪啪视频免费在线观看| 日韩欧美三级| 校园春色家庭伦理欧美激情| 人妻黑丝袜电影| 国产熟女一区二区丰满| 欧美午夜精品久久久久久超碰| 五月丁香色综合| 国产精品岛国片在线观看| 国产女人高潮嗷嗷嗷叫小说| 亚川综合视频| 91视频伊人| 国产无码久久高清| 人妻另类 专区 欧美 制服| 人人弄人人摸| 加勒比大香蕉视频在线| 极品欧美一区二区三区| 无码一区免费在线不卡| 精品亚洲天堂| 天天干人人乐| 风韵犹存大大大大香蕉| 51一区二区三区| 激情婷婷丁香| 亚洲欧美天| 欧美,日韩,中文,另类| 熟女天天干| 1204av韩国| 国产精品久久久九九九| 91麻豆天美国产| 97公开久久| 亚洲日韩熟女人妻高清在线|