国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

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

MySQL子查詢全解析:從概念、分類到優(yōu)化改寫實踐

MySQL子查詢全解析:從概念、分類到優(yōu)化改寫實踐 MySQL子查詢是個很神奇的東西你剛接觸SQL時覺得它難懂寫了幾年后又發(fā)現(xiàn)它是排查慢SQL時最常被拎出來“扣字眼”的地方。前陣子幫團隊處理一個報表慢查詢SQL里嵌套了三層子查詢單次執(zhí)行要二三十秒拆開分析后才發(fā)現(xiàn)不是子查詢本身的問題而是很多人把它當成了萬能鑰匙隨手往任何位置塞結果既傷性能又難維護。我干脆把MySQL子查詢從頭到尾整理了一遍從概念、分類、執(zhí)行邏輯、優(yōu)化器行為到改寫技巧都揉進這篇文章里適合剛學SQL的人當系統(tǒng)性筆記也適合寫了兩三年SQL但沒認真梳理過子查詢的開發(fā)者查漏補缺。本文用的全是可以在自己電腦上跑的MySQL 5.7/8.0例子不依賴任何在線環(huán)境的特定寫法。為了保證盡量全我把它拆成了六個大塊先說清楚子查詢的底層邏輯然后按“出現(xiàn)位置”和“返回結果”兩個維度重新分類再專門講相關子查詢和EXISTS最后是把子查詢弄慢的坑和改寫思路。直接開始。1. 先把子查詢這件事說清楚嵌套的SELECT到底返回了什么很多人背過定義子查詢就是“嵌套在其他查詢里的SELECT”。但這句話太稀松平常了它沒有回答那個最核心的問題一條SELECT塞進另一條SELECT之后到底算什么1.1 子查詢的本質一個可以“插”在任意位置的臨時結果集一個子查詢本質上就是一條完整、獨立、用括號包起來的SELECT語句。它的執(zhí)行結果可能是單個值、一列數(shù)據(jù)、一行數(shù)據(jù)也可能是一整張表。外層查詢拿到這個結果以后再根據(jù)自己的邏輯繼續(xù)篩選、計算、關聯(lián)。你可以把它理解成一個函數(shù)調用先執(zhí)行內層拿到一個返回值再把這個返回值塞進外層表達式里。比如最常見的“查工資高于平均工資的員工”腦子里的第一反應通常是先算出平均工資再把員工表和這個平均值比較。寫成SQL就是SELECT emp_id, emp_name, salary FROM employee WHERE salary (SELECT AVG(salary) FROM employee);這里的(SELECT AVG(salary) FROM employee)就是子查詢它返回了一個數(shù)值外層把它當成普通條件來比較。正因為子查詢的本質是“臨時結果”所以子查詢幾乎可以出現(xiàn)在SQL語句的任意角落SELECT子句里可以放、FROM子句里可以放、WHERE和HAVING里可以放、ORDER BY后面也能放。這也引出了很多人的困惑點——到底什么位置該放什么類型的子查詢答案其實很簡單看你需要這個子查詢返回什么要一個值就放表達式位置要一張表就放FROM里要一列值就放到IN、ANY、ALL這類集合運算的右邊。1.2 建一套測試數(shù)據(jù)后面所有例子都跑在它上面空口說概念很難有體感我先把后面反復用到的一整套測試表建出來。這個場景很簡單部門表、員工表、訂單表屬于業(yè)務系統(tǒng)里最常見的那類數(shù)據(jù)模型。CREATE TABLE department ( department_id INT PRIMARY KEY, department_name VARCHAR(50) NOT NULL, location VARCHAR(20) ); CREATE TABLE employee ( emp_id INT PRIMARY KEY, emp_name VARCHAR(50) NOT NULL, department_id INT, salary DECIMAL(10, 2) ); CREATE TABLE orders ( order_id INT PRIMARY KEY, emp_id INT, order_amount DECIMAL(10, 2), order_date DATE );插入少量但存在差異的數(shù)據(jù)方便看出每種查詢的含義INSERT INTO department VALUES (1, 技術部, A區(qū)), (2, 市場部, B區(qū)), (3, 財務部, A區(qū)); INSERT INTO employee VALUES (1, 員工A, 1, 10000.00), (2, 員工B, 1, 8000.00), (3, 員工C, 2, 9000.00), (4, 員工D, 2, 7000.00), (5, 員工E, 3, 6000.00); INSERT INTO orders VALUES (1, 1, 500.00, 2024-01-01), (2, 1, 300.00, 2024-01-05), (3, 2, 200.00, 2024-02-01), (4, 3, 400.00, 2024-02-10);先停在幾張表上不要急著復制代碼。后面每講一種寫法你都回到這個數(shù)據(jù)模型里跑一遍比死記語法有效得多。2. 按出現(xiàn)位置拆解SELECT、FROM、WHERE、HAVING里都能藏子查詢子查詢的“位置”決定了它的角色。我見過太多人只會寫WHERE后跟IN的子查詢然后一碰到復雜報表就傻眼。實際上四個主要位置各有各的用法和注意點。2.1 FROM子句的派生表把子查詢當臨時表用FROM子句里的子查詢在MySQL里叫派生表Derived Table你可以直接把它的查詢結果想象成一張臨時表然后再去JOIN、再篩選。最典型的場景是先做一層聚合統(tǒng)計再和其他表關聯(lián)。比如我想看“各部門平均工資超過8000元的部門名稱和平均工資”。難點在于部門名稱在department表平均工資必須從employee表里先GROUP BY算出來。這時候就適合先把平均工資算成派生表再去關聯(lián)部門表SELECT d.department_name, t.avg_salary FROM ( SELECT department_id, AVG(salary) AS avg_salary FROM employee GROUP BY department_id ) t JOIN department d ON d.department_id t.department_id WHERE t.avg_salary 8000;有兩個坑必須記住。第一MySQL要求派生表必須寫別名哪怕你后面完全沒用到也要給個名字否則直接報語法錯誤。第二從MySQL 5.7開始默認會把符合條件的派生表合并進外層查詢如果你在派生表里寫了ORDER BY但外層沒有LIMIT這個ORDER BY很可能被優(yōu)化器直接忽略排序順序不保證。正確的做法是要排序就在最外層排不要指望內層排序能穩(wěn)定傳出來。MySQL 8.0.14以后還可以用LATERAL派生表它允許內層子查詢引用外層查詢的列用來解決“每行動態(tài)算一個結果”的問題。但在日常業(yè)務里用得不算多先把普通派生表玩明白再說。2.2 WHERE子句的篩選比較、IN、ANY/ALL都在這里WHERE子句里的子查詢最常見但它不是只有IN一種寫法。它可以出現(xiàn)在普通比較運算符的右邊也可以配合IN、NOT IN、ANY、SOME、ALL這些集合運算符。最簡單的比較式篩選就是前面那個查工資高于平均工資的例子SELECT emp_id, emp_name, salary FROM employee WHERE salary (SELECT AVG(salary) FROM employee);如果子查詢返回的不是一個值而是一列值那就交給IN處理。比如查“部門位置在A區(qū)的所有員工”SELECT emp_id, emp_name, department_id FROM employee WHERE department_id IN ( SELECT department_id FROM department WHERE location A區(qū) );ANY和ALL相對冷門但偶爾遇到會很有用。ANY表示“只要比子查詢返回的任意一個值大就算滿足”等價于大于最小值ALL表示“要比所有值都大才算滿足”等價于大于最大值。例如“找出工資大于A區(qū)任意部門員工工資的人”可以寫成SELECT emp_id, emp_name, salary FROM employee WHERE salary ANY ( SELECT salary FROM employee WHERE department_id IN (1, 3) );這個SQL讀起來有點繞但它確實是合法的而且解決的是“一組里任意一個”或“一組里全部”的比較需求。用之前先想清楚你的業(yè)務是“大于任何一個”還是“大于全部”寫反了結果差異很大。2.3 SELECT和HAVING里的標量子查詢邊查邊算SELECT子句里也能放子查詢它返回一個值作為結果集中的一列。比如我想查每個員工的姓名以及他至今下了多少筆訂單SELECT e.emp_name, (SELECT COUNT(*) FROM orders o WHERE o.emp_id e.emp_id) AS order_cnt FROM employee e;這個寫法很直觀但有個限制SELECT子查詢必須返回標量也就是一行一列。如果返回了多行MySQL會直接報錯Subquery returns more than 1 row。所以使用前心里要有數(shù)被查的那一側要能保證唯一。HAVING子句里同樣可以放子查詢。比如“找出平均工資高于全公司平均工資的部門”SELECT department_id, AVG(salary) AS avg_salary FROM employee GROUP BY department_id HAVING AVG(salary) ( SELECT AVG(salary) FROM employee );注意HAVING里如果用到子查詢通常和GROUP BY配合它作用的對象是分組以后的結果不是原始行。很多人誤以為HAVING只是高級WHERE其實它是在分組聚合之后再做條件過濾執(zhí)行順序和WHERE完全不同。3. 按返回結果拆解標量、單列、單行、整表四種子查詢各有脾氣位置是子查詢“放在哪”返回類型是子查詢“返回什么”。這兩個維度經(jīng)常被混在一起連很多教程都沒講清楚。返回類型決定了子查詢能用在哪些語法里也決定了報錯姿勢是什么。3.1 標量子查詢只能返回一個值否則直接報錯標量子查詢返回一行一列也就是一個單獨的值。它是最“聽話”的一種子查詢可以用在幾乎任何普通表達式能出現(xiàn)的地方SELECT后、WHERE比較符右邊、SET賦值等。SELECT emp_name, salary, salary - (SELECT AVG(salary) FROM employee) AS diff FROM employee;這種寫法在報表里特別常見它能在同一行同時顯示員工工資和與平均工資的差值。使用時必須注意如果子查詢返回多行整個SQL直接報錯如果返回零行結果就是NULL不會報錯但參與計算時要提防NULL傳播。判斷一個子查詢是不是標量最粗暴的方法是看它有沒有“唯一性保證”。比如用主鍵或唯一鍵去篩選通常就是標量用GROUP BY后再聚合也一定是標量。反過來條件里不帶任何限制的SELECT department_id FROM employee想都不用想一定是多行結果。3.2 行子查詢把多個列打包成一個“元組”去比較行子查詢返回一行多列。它的用法比較特殊左括號里可以跟多個列右邊用一行子查詢結果去逐一對應。比如我要找“和員工A部門相同、工資也完全相同的那個人”可以寫SELECT emp_id, emp_name, department_id, salary FROM employee WHERE (department_id, salary) ( SELECT department_id, salary FROM employee WHERE emp_id 1 );這里(department_id, salary)是一個行構造器等號右邊的子查詢通過主鍵emp_id1保證了只返回一行。兩個括號里列的數(shù)量必須完全一致位置要一一對應否則MySQL會報列數(shù)不匹配的錯誤。這種寫法在日常開發(fā)里不算高頻但它對理解SQL的“行”這個維度挺有幫助。有時候你想表達“整行和某行一致”用行子查詢比拆開寫兩個條件更貼近業(yè)務語義可讀性反而更好。3.3 列子查詢與IN/ANY/ALL搭配集合關系判斷列子查詢返回一列多行本質上是一組值的集合。這組值通常喂給IN、ANY、ALL等運算符。IN的語義是“外層值是否屬于這個集合”SELECT emp_name FROM employee WHERE department_id IN ( SELECT department_id FROM department WHERE location A區(qū) );這里有個經(jīng)典性能陷阱如果你寫的子查詢本身要去重比如上面的結果可能返回多個重復department_idMySQL優(yōu)化器通常會幫你處理。但你也可以在子查詢里顯式加DISTINCT讓語義更明確。ANY和ALL與列子查詢配合時語義要搞清 ANY (...)等價于 IN ANY (...)等價于大于集合里的最小值 ALL (...)等價于大于集合里的最大值比如“找出工資大于市場部所有人工資的員工”SELECT emp_name, salary FROM employee WHERE salary ALL ( SELECT salary FROM employee WHERE department_id 2 );用ALL有個隱藏坑如果右邊的子查詢結果集為空ALL條件在大多數(shù)數(shù)據(jù)庫里會被判定為TRUE。這聽起來很反直覺但在邏輯上是自洽的——“大于空集合中的所有值”這個命題不存在反例于是為真。所以寫ALL之前一定要確認子查詢不會查空。3.4 表子查詢本質就是一張臨時表表子查詢返回多行多列通常只能出現(xiàn)在FROM子句里也就是前面講的派生表。它的所有行為都可以理解為“憑空生成一張臨時表”。SELECT department_id, AVG(salary) AS avg_salary FROM employee GROUP BY department_id HAVING AVG(salary) 8000;其實把上面這整段包一層括號再加個別名它就是一個表子查詢。表子查詢最大的價值在于“嵌套”你可以先聚合出一張臨時表再基于這張臨時表繼續(xù)查。繼續(xù)在外面套一層也是合法的但可讀性會迅速惡化這也是后面第六章里我要勸你用CTE的原因。四種子查詢的特點我常用一張表記返回類型返回形態(tài)典型出現(xiàn)位置典型報錯標量子查詢一行一列SELECT、WHERE比較符右側Subquery returns more than 1 row行子查詢一行多列WHERE行構造器右側Operand should contain N column(s)列子查詢多行一列IN、ANY、ALL右側一般不報錯結果可能為空集表子查詢多行多列FROM子句忘記別名導致語法錯誤4. 相關子查詢的執(zhí)行邏輯外層帶一行內層跟著跑一次前面講的所有子查詢執(zhí)行時基本都是“先算內層把它當成一個固定的結果再算外層”。但有一類子查詢不是這個路子它讓很多新手栽過跟頭那就是相關子查詢Correlated Subquery。4.1 非相關子查詢先算內層一次再算外層先看個對比。前面寫過的“工資高于全公司平均工資”內層是SELECT AVG(salary) FROM employee這個查詢結果和任何一行員工都沒有關系完全獨立。這種就叫非相關子查詢它的執(zhí)行邏輯非常直白先執(zhí)行一次內層拿到一個常數(shù)平均值再去外層一行行比較。性能開銷基本可以忽略。SELECT emp_id, emp_name, salary FROM employee WHERE salary (SELECT AVG(salary) FROM employee);這種“先算一次再復用”的模型最簡單也是優(yōu)化的理想形態(tài)。MySQL優(yōu)化器遇到這類子查詢通常會緩存結果不會傻傻地每行重新算一遍。4.2 相關子查詢逐行“靈魂拷問”用對場景威力巨大相關子查詢的內層會引用外層查詢的列導致它沒法獨立執(zhí)行。外層查一行內層就要帶著這一行的參數(shù)跑一次。聽起來很慢但它能解決一類非相關子查詢做不到的問題每一行需要單獨計算的對比。典型例子是“找出工資高于本部門平均工資的員工”。這個需求里每個員工的對比基準不一樣技術部的員工要跟技術部平均工資比市場部的員工要跟市場部平均工資比。你沒法用固定平均值解決只能讓內層跟著外層的department_id動態(tài)變化SELECT e1.emp_id, e1.emp_name, e1.salary, e1.department_id FROM employee e1 WHERE e1.salary ( SELECT AVG(e2.salary) FROM employee e2 WHERE e2.department_id e1.department_id );執(zhí)行時MySQL取外層第一行員工A帶著它的department_id1去算技術部平均工資比較再取員工B還是department_id1又算一次技術部平均工資到了員工Cdepartment_id變成2再算市場部平均工資。這就是為什么相關子查詢被叫作逐行“靈魂拷問”——外層有多少行內層就可能跑多少次。在數(shù)據(jù)量小的時候這種寫法很爽邏輯直接。但表一大相關子查詢就是性能殺手。優(yōu)化思路通常有兩個一個是用JOIN加聚合先把每部門的平均工資算成臨時表再關聯(lián)另一個是用窗口函數(shù)AVG() OVER(PARTITION BY department_id)MySQL 8.0已經(jīng)支持寫起來更優(yōu)雅。例如SELECT emp_id, emp_name, salary, department_id FROM ( SELECT emp_id, emp_name, salary, department_id, AVG(salary) OVER(PARTITION BY department_id) AS dept_avg_salary FROM employee ) t WHERE salary dept_avg_salary;這種寫法只需要掃一遍表效率比相關子查詢高不少。能用窗口函數(shù)替代的場景我?guī)缀醪惶珪孟嚓P子查詢。4.3 EXISTS / NOT EXISTS存在性判斷的正確打開方式EXISTS后面接的子查詢不關心返回什么列它只問一個問題子查詢會不會返回任何一行。如果返回了哪怕一行EXISTS為真否則為假。所以很多老手會寫SELECT 1而不是SELECT *意義在于提醒自己和讀者列名無關緊要存在性才重要。比如找“下過訂單的員工”SELECT e.emp_id, e.emp_name FROM employee e WHERE EXISTS ( SELECT 1 FROM orders o WHERE o.emp_id e.emp_id );EXISTS天然就是相關子查詢因為內層通常都要通過外層的員工ID去訂單表里找匹配記錄。它的優(yōu)勢在于“提前終止”只要找到第一條滿足條件的訂單這一行員工就算命中不用繼續(xù)把訂單掃完。配合訂單表上的emp_id索引效果非常好。這里必須說一個高頻坑NOT EXISTS和NOT IN并不等價。NOT IN在遇到子查詢結果里有NULL時會直接變成“未知”最終結果往往是空集不是你要的數(shù)據(jù)。想表達“沒有訂單記錄”這種語義優(yōu)先用NOT EXISTSSELECT e.emp_id, e.emp_name FROM employee e WHERE NOT EXISTS ( SELECT 1 FROM orders o WHERE o.emp_id e.emp_id );很多線上事故就是有人圖省事把NOT EXISTS改成了NOT IN然后整個報表查出來一片空白。第六章里我會再把這個NULL坑單獨拎出來強調。5. 性能排障現(xiàn)場子查詢?yōu)槭裁磿约癕ySQL優(yōu)化器如何處理與其玄學地背“子查詢慢、JOIN快”不如先搞清楚慢在哪個環(huán)節(jié)。很多情況下子查詢被優(yōu)化器處理得足夠好你不比盲目改寫。下面這個章節(jié)我用實際排障的思路來拆。5.1 三個讓子查詢變慢的常見原因第一個原因相關子查詢的循環(huán)次數(shù)爆炸。外層有一萬行內層就執(zhí)行一萬次即使每次內層只要幾毫秒累計起來也是幾十秒。這種慢最容易被忽略因為只看單條SQL文本你根本看不出執(zhí)行次數(shù)。第二個原因派生表或子查詢結果被反復物化成臨時表且沒有索引。所謂物化就是優(yōu)化器把子查詢的結果真正落成一張帶數(shù)據(jù)的臨時表放在內存或磁盤上。如果這張臨時表很大或者外層查詢要反復訪問它但沒有合適的索引性能就直線下降。第三個原因統(tǒng)計信息不準確導致優(yōu)化器選擇了錯誤策略。MySQL的優(yōu)化器依賴表的行數(shù)和索引基數(shù)做成本估算。如果長期沒更新統(tǒng)計信息它可能把一個本來能走索引的子查詢判斷成“物化更劃算”或“掃描更劃算”最終執(zhí)行計劃很糟糕。遇到詭異變慢的子查詢先跑一下ANALYZE TABLE更新統(tǒng)計信息再測試我至少遇到兩次是這個問題。5.2 透過EXPLAIN看優(yōu)化器SUBQUERY、DERIVED、MATERIALIZED定位地址永遠是執(zhí)行計劃。MySQL里用EXPLAIN看子查詢時重點關注select_type列最常見的幾個值是select_type含義PRIMARY最外層查詢SUBQUERY非相關子查詢通常執(zhí)行一次DEPENDENT SUBQUERY相關子查詢外層每行執(zhí)行一次DERIVEDFROM子句里的派生表會被物化或合并MATERIALIZED子查詢被物化成臨時表UNCACHEABLE SUBQUERY每次執(zhí)行結果都可能變化無法緩存看計劃時先找DEPENDENT SUBQUERY只要出現(xiàn)它你就得懷疑循環(huán)次數(shù)。再看有沒有DERIVED或MATERIALIZED如果有注意臨時表的大小和是否使用到索引。MySQL 8.0的EXPLAIN FORMATTREE會把子查詢的執(zhí)行關系顯示得更直觀。比如對這條SQLEXPLAIN FORMATTREE SELECT emp_id, emp_name FROM employee WHERE emp_id IN (SELECT emp_id FROM orders);8.0的執(zhí)行計劃里可能會看到類似“Nested loop semijoin”的節(jié)點這說明優(yōu)化器把IN子查詢轉換成了半連接semi-join而不是傻傻地物化整個orders表。這種“優(yōu)化器替你做決定”的情況非常多所以別把“子查詢一定慢”當成金科玉律。關于半連接可以簡單理解它只拿外層表的每一行去子查詢里找“能不能匹配上”匹配上就停不關心子查詢里匹配了幾條。這比把整個子查詢結果先算出來再IN判斷要高效很多尤其是在子查詢結果集很大的場景。5.3 子查詢改寫JOIN的實戰(zhàn)標準和反例那什么時候值得手動把子查詢改寫成JOIN我的判斷標準很簡單先看執(zhí)行計劃確認優(yōu)化器沒有做半連接物化等優(yōu)化并且這個子查詢可以無損地改成JOIN。最典型的改寫場景是IN列子查詢。例如SELECT e.emp_id, e.emp_name FROM employee e WHERE e.emp_id IN ( SELECT o.emp_id FROM orders o WHERE o.order_amount 100 );可以改寫為SELECT DISTINCT e.emp_id, e.emp_name FROM employee e JOIN orders o ON o.emp_id e.emp_id WHERE o.order_amount 100;關鍵差別在于JOIN會把兩表匹配的所有組合都保留而IN只需要“有匹配”所以要多加一個DISTINCT。如果你不加同一員工下過三筆符合條件的訂單結果里就會出現(xiàn)三行這是IN與JOIN最常見的語義差異。但也要講清楚反例。如果子查詢里用了聚合函數(shù)、窗口函數(shù)或者你需要子查詢結果保持NULL語義改寫就要非常謹慎。比如“查工資高于本部門平均工資的員工”用相關子查詢寫很直觀改寫JOIN就得先把部門平均工資聚合出來再關聯(lián)寫法上未必更簡單SELECT e.emp_id, e.emp_name, e.salary FROM employee e JOIN ( SELECT department_id, AVG(salary) AS avg_salary FROM employee GROUP BY department_id ) d ON d.department_id e.department_id WHERE e.salary d.avg_salary;這種改寫把相關子查詢變成了“一表一聚合一關聯(lián)”執(zhí)行次數(shù)從N次變成掃兩次表加一次JOIN才是真正的性能優(yōu)化。改寫前最好用EXPLAIN確認優(yōu)化器原本的策略確實不理想別為了“看起來專業(yè)”去改一段不慢的SQL。6. 我平時寫子查詢的幾條習慣有的坑踩多了才總結出來最后這部分不是語法講解是我自己寫SQL時默認遵守的習慣。不保證每條都適合所有團隊但照著做大概率能少挨幾次夜班。6.1 邏輯清晰優(yōu)先性能問題用分析說話同一個需求子查詢和JOIN往往都能實現(xiàn)。我的第一選擇永遠是“誰更能表達業(yè)務語義就用誰”。子查詢在這方面的優(yōu)勢是它能把“先算什么再算什么”這個過程寫得很直白。比如“找出比平均工資高的人”子查詢一眼就能看出來先算平均值。如果你直接用自連接JOIN寫可能要想半天為什么有兩張employee表。不要聽風就是雨一聽子查詢就皺眉。先用EXPLAIN看執(zhí)行計劃再決定要不要改寫。很多時候MySQL已經(jīng)幫你處理得很好手動改寫反而畫蛇添足。6.2 涉及NULL時IN/NOT IN要格外小心這是我在實際項目里栽得最痛的一次。當時查“沒有訂單記錄的員工”同事寫的是NOT IN結果查出來永遠是空集。原因就是子查詢結果里有NULL?;A規(guī)則是這樣的如果子查詢返回的列表里哪怕有一個NULLNOT IN的結果往往就是“不成立”而不是“找到?jīng)]匹配的行”。比如SELECT emp_name FROM employee WHERE emp_id NOT IN (SELECT emp_id FROM orders);如果orders表里存在一行emp_id為NULL的記錄條件emp_id NOT IN (1, 2, NULL)的邏輯結果不是TRUE或FALSE而是NULL/UNKNOWN。WHERE只保留TRUE行于是什么都不返回。所以凡是寫NOT IN我都會先確認子查詢列有沒有NOT NULL約束。如果沒有直接改用NOT EXISTS更安全性能也更好。6.3 嵌套太深就用CTE別疊三層以上子查詢可以無限嵌套但不代表我們應該這么干。三層以內勉強能靠縮進讀懂超過三層基本只有寫它的人能維護一個月后再看就是天書。MySQL 8.0里我強烈建議用CTECommon Table Expression替代深嵌套子查詢。比如前面那個“找本部門工資高于平均工資的員工”用CTE寫是這樣WITH dept_avg AS ( SELECT department_id, AVG(salary) AS avg_salary FROM employee GROUP BY department_id ) SELECT e.emp_name, e.salary, d.avg_salary FROM employee e JOIN dept_avg d ON e.department_id d.department_id WHERE e.salary d.avg_salary;CTE的另一個好處是同一段中間結果可以被后續(xù)多個查詢復用而普通子查詢只能在一個地方使用。遇到一段邏輯要被引用兩次的場景CTE能顯著減少SQL膨脹。MySQL 8.0以下的版本沒法用CTE那就盡量把嵌套層數(shù)控制在兩層內或者把復雜邏輯拆成視圖。6.4 上線之前用EXPLAIN ANALYZE看一眼真實執(zhí)行時間寫SQL不能靠猜尤其是上線到生產環(huán)境的報表SQL。MySQL 8.0.18開始支持EXPLAIN ANALYZE它能真正執(zhí)行SQL并返回實際執(zhí)行時間、行數(shù)和循環(huán)次數(shù)比單獨看EXPLAIN的估算更可靠。EXPLAIN ANALYZE SELECT e.emp_id, e.emp_name FROM employee e WHERE EXISTS ( SELECT 1 FROM orders o WHERE o.emp_id e.emp_id );結果里會顯示類似“actual time0.1...0.2 rows1 loops5”的信息。這里loops尤其重要如果loops接近外層行數(shù)說明這就是相關子查詢在逐行循環(huán)那就是下一步優(yōu)化的主要對象。拿到真實數(shù)據(jù)后你改不改、改成什么都有了依據(jù)而不是憑感覺說“子查詢太慢”。我在實際使用中最常做的一件事就是先用小數(shù)據(jù)量驗證邏輯對不對再拿生產數(shù)據(jù)量做EXPLAIN ANALYZE最后把慢的候選SQL集中優(yōu)化一遍。MySQL子查詢本身沒有善惡之分它只是SQL的一部分真正決定快慢的是你對數(shù)據(jù)結構、索引和優(yōu)化器行為的理解。把這幾個維度串起來你就能在正確的地方用子查詢在合適的時候改寫它也就不需要再記什么“子查詢一定慢”的教條了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
淫色网综合| 亚洲91在线播放影院| 密桃99999| 熟女少妇视频| 91久久伊人婷婷青青草| 99精品在线| 试看日韩黄片| 久9综合在线| 一区二区三区精品黑丝白丝酒店对鸡 | 中国91AV| 精品无码人妻一区二区免费蜜桃| 国产人妻精品久久久一区二区三区| 久久少妇| 蜜臀99久久国产| 色噜噜狠狠色综无码久久合欧美| 综合 欧美 亚洲 日本| 综合亚洲网| 亚洲人精品久久久喷水| 夜夜草网站| 91久久免费视频互動交流| 久久久久久久少妇| 四虎884| 春色综合免费| 国产乱人妻精品入口| 一级免费啪啪片| 北约熟女超碰| 13小男生GAY自慰脱裤子| 青青草一区二区三区四| 97硬碰| 综合啪啪| 精品人妻伦一二三区久久| 中文字幕乱在线伦视频中文字幕乱码在线 | 91 天天综合| 国产女人9999| 激情小说亚洲图片| 91欧美网| 91女色| 清纯唯美综合亚洲| 亚洲AV人人澡人人爱| 亚洲色图综合网| 欧美精品丝袜久久久中文字幕| 国产精品成人蜜臀AV在线| 亚洲欧美综合区自拍另类| 国产99热| 国产精品呦一区二区三区| 日韩欧美加勒比| 诱惑网综合| 超碰美国| 啊啊啊啊啊啊好多水| 日本精品五区| 精品欧美老熟女一二区| 色欲天天综合久久久无码网中文| 日本操逼视频免费| 人人操我人人干| 高清无码在线播放网站| 亚洲无码?第一页| 少妇高潮对白在线观看| 色色99| 黄片直播三级黄片两女一男| 亚洲成人在线播放| 日本有码久久| 亚洲熟女国产综合另类| a人片中文字幕一区二区| 欧美熟女激情| 亚av顶级裸体一区二区三区四区五区 | 久久精品国内Av熟女高清| 84YTCOM性无码| 91P0RNY大屁股人妻| 亚洲蜜乳av| 强奸乱伦av电影| 性开放中文AV高清无码免费看| 在线可观看的黄色网址| 成人情色一区二区| 九九九热精品| 男同专区一区二区三区在线| 精品一区二区三区国产| 天天草天天干天天日| www色日本| 五月丁香在线| 天美一二三在线观看Av| 九一综合网| 91丝袜人妻| 精品在线蜜臀| 国产精品一区av在线| 免费综合亚洲中文| 大香蕉综合| 中文子幕一二三| 色妇综合网| 男生通女生屁股| 亚洲无线观看久久| 1769一区二区| 超碰97最新人妻| 亚洲女优有码无码高清| 亚洲AV无码AV吞精久久久久| 精品91摸| 亚洲综合伊人| 欧美黄片免费在线观看视频| 久久精品国产精品亚洲艾通辽熟妇| 国产版a级片直播在线| 超碰97在线 欧美 国产| 性欧美第一页| 亚洲最新中文字幕免费| 青春草A| 精品对白久久不卡| 操操操日本的逼| 第二页中文字幕| 蜜桃香蕉久草精品在线| 黄色欧美性爱视频| 99精品无码| 欧美福利视频啊啊啊啊| 天天综合网1| 91在线视频国产网站| 天天操夜夜操狠很操| 精品四五区| 久久精品国产97欧美精品亚洲 | 亚洲国产精品久久久久久久久久| 67914在线兔费成人视频| 极品销魂美女一区二区| 欧美日韩国产中文精品字幕自在自线| 青操影院| 久久毛卡| 天天综合~91| 啪啪免费| 黄呦呦在线| 欧美日韩啪啪电影| 亚洲精品欧美专业| 亚洲阿v天堂无码z2018| 欧美夜夜骑视频| 老司机老司机午夜影院| 97久久久精品| 中文字幕精品一区二区精| 男人下部插入女人下部| 国产粉嫩蜜臀av一区二区三区| 99精品久久久久久久婷婷蜜桃| 高跟伊人julia ann| 青娱乐淫乱1314| 97se综合网| 黑人娇小av在线播放| 熟妇熟女视频一区二区三区| 777超碰| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 激情自拍 校园春色| 97欧美久久久久久久| 伊人久久大香线蕉无码| 熟妇一区二区三区| 亚洲操人| 97在线视频网站| 亚洲91网。| 久久亚州精品成人Av无| 午夜男人的天堂| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 牛牛操视频逼| 欧美亚洲宗合色性图| 久久av成人无码免费| 亚洲日韩XXX| av毛片aaaaa免费看| 亚洲在高跟鞋自慰久久在色线| 天天射天天色成人| 欧美一区二区在线资源| 极品极品色影院| 欧美色吧综合| 日韩偷拍色图| 色九区| 黄色片A级一区二区三区| 东京热不卡视频| 日韩欧美亚洲一区二区三区影院| 9丨久久九九九| 污到发麻的视频 国产| 成人无码在线视频网站| 校园春色欧美| 91天堂视频| 欧美疯狂做爰xxxx| 这里是精品| 亚洲激情在线观看一区| 性综合网| 91精品国产乱码| 人妻天天夜夜爽一区二区| WWW.操逼.COM| 91天天爽| 天天操福利视频综合网站| 97WW精品| 人人操肉肉| 日逼97| 欧美 亚洲 另类 综合| 九九av| 免费福利视频中文字幕| 啊啊啊想要| 婷婷九月国产| 亚洲视频,小说| 国产AV高清AV无码| 无码外流操逼视频| 欧美性爱综合,免费| 欧美亚洲系列| 日本99一区二区| 久操黄色视频| 99视频自拍| 亚洲97久久精品亚洲| 白丝被操91| s片在线观看| 欧美亚洲丝袜美女电影| 欧美一级欧美三级在线观看| 亚洲欧美大| 日韩综合无码一区久久92| 亚洲极品| 91网站18在线| 国产亚洲 中文欧美久久| 国产精品亚洲天堂网址| 国产91av在线播放| 四虎国产精品永久在线囯在线 | 欧美韩国你懂得在线| 久久男人的天堂国产| 亚洲性感丝袜诱惑在线观看| 色拍偷亚洲| 亚洲熟妇熟在线电影视频| 920日本午夜免费| 欧美综合站| 日韩一区二区精彩视频| 伊人五月天婷婷| 中文字幕黄色一起草| 人人操人人精品影片| 久久综合超碰| 动漫片子网站3黄| 日韩人妻少妇中文字幕| 91超级碰碰碰| 色综合91| 久久偷拍人| 久久偷拍人| 国产美女口爆吞精| 伊人久久亚洲色欲综合网站 | 色亚洲欧美| 国产三级中文字幕粉嫩| 欧美不在线| 日日摸日日碰夜夜爽视频| 精品无吗m| 五月亭亭六月丁香| 狠狠色狠狠色狠狠五月| 六月婷婷综合| 福利视频一区二区微拍| 一区在线观看中文字幕| 免费视频无码| 欧美成不卡网| 999九九精品| 亚洲无限观看| 婷婷爽人人婷婷爽视频| www老逼91| 闷骚老熟女15P| 极品丝袜无码| 亚洲色人阁| 久久狠狠色噜噜狠狠狠狠97| 久久人人爽爽人人爽人人片αV| 一本久道在线综合视频| 国产一级片| 人妻精品综合中文字幕在线| 黑人精品久久97| 蜜臀Av一区二区三区| juliaann欧美丝袜办公室| 亚洲性爱乱操x| 日本肉体xxxx裸交| 99九九久久| 久久视频,这里只有精品| 高颜值美女口爆高潮浪叫| 久操免费在线| 国产女人成人精品视频| 久久久熟妇熟女国产| 97网站在线观看| 26uuu最新| 久久婷婷影院| 免费啪啪一级视频| 国产日韩精品一区二区三区| 久久亚州大香蕉| 亲子敌伦对白在线播放| 超碰在线人妻| 久久草视频污视频| 玖玖爱在线视频免费观看| 偷拍自拍在线视频观看| 97se综合网| 人妻激情视频| 91站街按摩店老熟女熟女| 日韩欧美视频青青| 乱伦熟女论坛| 一区二区三区四区色图| 97人人夜| 亚洲一卡二卡在线免费| 狠狠久久四虎| 亚洲图片欧美| 加勒比久久综合网高清| 91精品又粗又猛又爽| 精品人成视频在线观看| 素人播放一区| 日本色色色网站免费看不卡| 天天看综合网| 亚洲熟女诱惑| 亚洲精品久久久久久久久豆丁网| 亚洲综合伊人无码久久| 色婷网| 精品中文日韩字幕视频| 美国精品国产精品| 综合五月天| 91AV天美在线视频| 手机看片1025| 天天日骚逼熟女| 日韩黄色电影网站| 欧美线天码中字| 手机看片1024你懂的国产| 国产白领连续中出在线播放| 99久久精品无码一区二区毛片免费| 激情综合五月| 蜜臀久久99精品久久久电影| 国模一区二区三区| 男人的天堂2018| 成人在线视频网| 无马一区二区| ,国产乱人伦精品一区二区三区| 国产精品一区二区密臀| 熟女精品一区二区三区| 大香蕉伊人网| 69人妻精品丰满熟女区| 亚洲熟久久| AV和黑人在线播放| 国产精品乱码久久久久久久| 激情啪啪拍91| 国产欧美另类久久久精品课程| 亚洲国产激情国产av| 久操操| 久久久久久97| 欧美日韩一干二干| WWW黄片COM| 99re视频在线播放青草| 色哟哟国产精品免费网址| 亚洲中文字幕熟女| 一区二区视频你懂的| japan日本高清乱xxxx| 亚洲性感丝袜诱惑在线观看| 九月婷婷久久| 亚洲成a人v欧美综合天堂下载| 色老汉色| 九九精品无码专区免费| 九九五月天| 99综合| 精品国产av一区二区三区四区入口| 久久蜜桃综合网| 国产精品无码在线| 欧美AAAA黄片| 亚州黄站| 97精品国产精品免费观看| 2018色综合天天操| 免费αV在线视频| 蜜桃狠狠色伊人亚洲综合 | 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 亚洲精品啪视频| 综合九九| 久插综合| 欧美极度丰满熟妇hd| 嗯嗯不要视频| 97网址97| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 在线看的av| 嗯嗯嗯啊啊啊干死我吧| 熟女人妻av在线资源,黄色的资源| 园内精品自拍视频在线播放| 亚洲男人的天堂va亚洲男人社| 亚洲图片 激情小说| 五月综合激情网| 大香蕉视频一二三区| 欧美在线啊啊| 天天干1区2区在线| 97网址97| 大乔未久88一区| 色婷婷视频| 国产在线视视频有精品| 欧美翘臀视频网站一区二区三区| 国产精品久久久九九九| 欧美精品第四五页中文字幕在线观看| 在线播放一级无码视频| 伦激情人妻另类人妻| 超碰天天操| 开心激情站| 日本一区二区三区四区免费观看| 97人人夜| 有码专区最新中文字幕有码| 加勒比海成人视频网 | 91欧美| 午夜福利免费精品视频| 亚洲精品xxx| 国产精品999aaa| 欧洲精品二区| 日韩综合色图| 神马九九| 狠狠久久手机视频精品| 看全色黄大色大片免费视频| 中文字幕无码不卡啪啪| 91男人天堂网| 三及片网站| 97欧美日韩精品| 国产精品久久久亚洲第一牛牛_在线观看| 夜夜操中文字幕| 四虎在线免费视频| 又黄又硬又粗又长国产视频| TS人妖另类精品视频系列| 五十路一区无码| 超碰99在线| 欧美亚洲手机在线| 一区二区三| 六月婷激情福利天堂69| 在线无码操| 囯产操逼片| 一级性爱aaaa| 精品91摸| 蜜桃色院一区久久 | 国产日韩精品suv| 欧美一区二区一级岛国大片| 特级丰满少妇一级AAAA爱毛片| 韩日性爱av| 强奸a片网| 91碰碰碰| 天天综合影院91| 成人久久精品| 亚洲色情在线影视| 大香蕉中文网| 免费视频97| 久久久999国产| 黄页| 大香蕉视频一二三区| 岛国片在线播放| 免费久久精品麻豆一区二区av| 99操| 91性感网站| 91综合天天看| 波多野结衣之双飞调教在线播放 | 玖玖婷婷五月天| 欧美久久草熟女| 亚洲限制级| 天堂av最新电影网| 呦呦一区| 33044男人的天堂深夜备| 资源新线在线天堂| 国产麻豆福利av在线播放| 99色在线| 欧美超碰人妻97| 20cm女自慰在线日韩欧美| 美女操逼福利视频| 欧美亚洲性爱一区二区| 婷婷九月国产| 亚洲,日韩,欧美,成人播放| 高清在线偷拍自拍视频| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 超碰综合97在线| 大香蕉一级黄色片久久| 国产欧美一区激情交| 国产一区二区a毛片| 欧美日韩天堂| 91丝袜激情在线| 欧美在线视频观看一二三四区高清| JuliaAnn丝袜熟女系列| www.久久最新地址| 亚91亚洲网| 九九九九九九综合| 欧美特大黄一级片片免费| 97天天爽| 少妇的嫩逼图片| 欧美黑人精品在线播放| 中文字幕免费观看| 欧美天天| 少妇毛片久久| 亚洲精品97| 久久久人妻| 久久久天美| 亚洲天堂一区二区久久| 91人人看| 黄片视频观看| 超91综合网| 97网色| 日本在线播放不卡一区| 亚洲乱熟女一区二区| 国产网站在线播放| 亚洲素人综合| 亚洲精品人妻吞精av| 性交一区二区在线播放| 欧美亚洲一区二区久久久婷精品大包诱| 91国产丝袜白虎| av天堂5| 五月天伊人| 麻豆国产97在线| 青青草在线视频欧美| 青娱乐休闲视频在线观看| 不卡超碰护士AV在线免费播放| 久久9久久| 蜜臀少妇一区二区| 东京热双插| 亚州伊人色综台| 97精品一区二区三区免费| 亚洲天堂久久| 啊啊啊啊网站| 综合久| 少妇无码999| 少妇蜜汁| 色色色色日本| 亚洲AV色图| 黄色污污污污污污网站| 午夜超爽| 亚洲AV不卡在线观看| 日本一级性爱| 夜夜爽夜夜操| 天天摸夜夜摸| 一起草日韩| 男人综合网| 中文字幕丝袜美腿| 国产91久久九九免费精品无码| 亚洲丨在线| 日韩伦理视频| 国产亚洲日韩在线三区黑人| 狠狠97| 夜夜一区二区| 国产日韩欧美中文在线播放| 超碰人妻中文在线| 福利社区午夜一区二区| 亚洲激情久久久伊人综合| 久久一二三级一一一| 肏逼视频日本| 日韩在线观看AV| www.久久爱| 中文字幕精品免费一区二区| 久久亚洲人妻| 亚洲情色91| 国产av波波国产精品| 麻豆一区二区AV天美| 精品视频97| 国内毛片无码一级毛片| 女同女同恋久久级三级| 精品久久97| www.男人天堂| 亚洲精品久久久久久久久豆丁网| 国产极品99热在线播放69| 无码人妻一区二区三区四区老鸭窝| 在线天堂999| 欧美91丝袜| 日本1区2区不卡视频| 9美女超碰在线免费观看| av一区二区三区四区五区久草臀| 久久小视频| 操比国产| 九九九九精品九九九九| 天天爱综合网| 97超级欧美| 超碰调教97| 久操不卡视频| 国产在线视频二区| 麻豆天美91| 91精品网站| 91超碰丝袜制服| 91成人精品| 99热97| 国产玖玖| 超碰av在线| 天堂8在线新版官网| 夜夜欧美 | 久久久久国产精品片区无码直播| 国产中文大片资源中文字幕 | 婷婷中文字幕| 亚洲日韩精品在线播放| 五月丁香社区婷婷日韩欧美精品影院| 影音先锋少妇| 天天看天天在线精品| 日韩强奸av| 大香蕉中文| 人人操人人肉久久精品| 射丝袜大香蕉| 精品久久艹| 天天搞欧美| 午夜成人福利影视| 麻豆人妻少妇在线免费观看| 久久骚少妇| 诱惑人妻欧美一区在线播放| 久久99精品九九久久久婷婷| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 美女9118禁| 97超碰总站| 另类欧美| 久久女人| 青青草九九九九九| 99久久这里只有精品| 欧美大香蕉卡久久| 欧美天天综| 97人人爱人人做人人乐| 国产精品乱码久久久久久| 超碰97亚洲区| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 99只有精品| 2020中文字幕在线| 天天摸天天舔天天操| 久久久999网站| 亚洲中文字幕乱码无码一区二区| 嗯嗯,好大,好爽,好骚| 少妇专区一二三四五| 野狼激情网| 国产原创自拍| 熟女天天干| 亚洲情色综合网| 精品福利| 色网在线视频观看免费| 去干网最新版| 91c色| 激情五月天网站| 极品粉嫩少妇视频| 天天综合~91| 日韩兔费看黄片| 精品人妻一区| 国产精品天美传媒| 99国内熟女露脸视频| 密臀视频三区免费网站| 被男人添B超爽视频| 久久激情视频| 超碰碰激情97+久| 97国产|免费| 俺去啦俺来也久久综合| 看一级黄色视频| AV天堂男人的天堂| 大香蕉人妻久久| 国产黄色在线播放观看| 99色热| 玖玖草久草99蜜月一区二区三区| 色婷婷影视| 校园春色亚洲无码| 久久久久久九九九| 女人午夜视频777| 亚洲男人的天堂V| 粉嫩AV一区夜夜嗨| v91av| 一区二区精品日韩欧美在线观看| 久操不卡视频| AV男人天堂网| 操逼视频色| 日本天天吊| 麻豆天美在线| 天天谢天天干| 国产60区。| 97色在线视频| 女人爽到高潮潮喷18禁网站| 大香蕉欧美国产日韩高潮| 国产又粗又大硬免费色网视频| 91free福利| 国产熟码AV| 国产亚洲日韩在线三区黑人| 天天日日日射| 明星性猛交ⅹxxx乱大交| 99热这里是精品| 日日躁狠狠躁天天躁精品| 亚洲精品毛片在线观看| 欧美五区| 久久在线观看免费视频| 国产成人资源| 91老熟妇| 久视频在线观看| 国产怡红院在线| 中文自拍欧美影视| 亚洲麻豆18发?| 国产精品麻豆视频网站| 久偷拍欧美日韩三区| 人妻干天天| 超碰97玖玖爱| 久综合国内精品自在自线| 北条麻妃性愛视频| 手机在线中文字幕国产 | 久久精品国产亚洲妲己影视| 啊啊啊好湿国产一二| 青娱乐淫乱1314| 约操熟妇| 五月天九九日国产精品一区二区三区| 日韩无码专区| 伊人操| 91欧美偷拍| 欧美日韩*字幕一区| 91欧美长吊| 亚洲天堂一区| 日日天天久久啊啊aaa| 国产女人视频三四五区| 丝袜性亚洲| 伊人五月天激情| 欧美日韩妖精91com| 操人91| 97在线免费观看| 97看操| 成年人性爱日韩| 欧美翘臀视频网站一区二区三区| 999久久久久久久精| 九九精品无码专区免费| 国产高清在线自在拍69| 国产精品一区二区黄片| 欧美人妻少妇| 99RE在线视频精品,这里只有精品| 免费一级精品啪啪视频| 都市激情人妻一区二区青青操视频| 少妇3P性爱自拍| 人妻激情视频| 日本不卡三级网在线播放| 日韩 欧美 另类 人妻| 综合网亚洲在线| 白丝AV网站| 欧美日韩国产另类综合| 熟女熟妇伦久久影院毛片一区二区| 日本 欧美 亚中文字幕| 亚洲黄色视频在线观看视频| 久久成人网站| 精品国产自在在线99| 91亚洲网站| 欧美大香蕉97| 久久精品一区二区三区不卡| 亚洲欧美激情小说| 超碰97在线 欧美 国产| 久久综合99| 久热精品在线国产| 中欧人妻丝袜中文字幕 | 9色国产精品一区粉嫩| 91精品人妻五十路| 欧美久久毛片基地| 日本午夜福利影院| 国产精品白丝在线播放| 91人人| 裸模AV女优| 精品女人999| 极品白嫩美女白浆成人福利在线看| 伊人天天久久动态图| 67914在线兔费成人视频| 国产精品经典一卡久久久 | 久久午夜色播影院免费高清| 亚洲十八禁止| 2019AV天堂| 亚州精人品大香蕉| 欧美人人AAA| 91成人久久| 亚洲av国产av综合av卡| 天美精品原创av片国产| 欧美日韩亚洲五月天婷婷| 天天色香欲综合网| 密桃99999| 免费看欧美美女黄色大片| 天天视频网站黄| 麻豆三极片| 国产精品久久久| 老司机午夜精品福利视频一区二区| 久久超碰、| 97欧美精品综合| 大香蕉伊利av| WWW4虎| 日本熟妇一区二区三区| 91Chinese在线| 欧美国产日韩高清在线| 久久国内| 亚洲国产麻豆一区二区三区| 日韩欧美成人性爱在线| 黄色电影观看久久9| 亚洲图片色图欧美另类| 欧美一区二区三区互相| WWW啪啪的com| 国产操逼视频在线观看| 国产精品一区二区校花| 国产一区二区a毛片| 天天色天天干天天爱| 欧美一区二区日韩三区| 成人免费看吃奶视频网站| 女欧美一区二三区| 狠狠色噜噜狠狠狠狠2018| 91香蕉视频在线观看免费| 婷婷av在线中文字幕| 亚洲成人在线高清| 国岛片视频| 久精品无码av一区二免费国产在线观看| 亚洲色图亚洲无码强奸乱伦| 国产极品99热在线播放69| 免费一级精品啪啪视频| 天天草天天干天天日| 亚欧韩av| 青青草日韩无码| 日本午夜福利影院| 青青草日逼视频| 亚洲人妻熟妇三十三区| 日韩78m视频| 99这里只有精品| 97中文字幕一区| 天天影视色香欲综合网小说| 免费黄色片。| 在线视频 亚洲精品| 免费少妇一区二区| 大香蕉专区| 久久精品欧美一区蜜桃| 超碰碰97| 欧美女同在线| 天天视频黄| 国产精品嫩草影院免费| www.色五月| 天天天天天天天天综合| 亚洲清纯唯美| 丁香婷婷五月| 国产综合网站在线播放| 大香蕉啪啪啪| 粉嫩久久久久| 九月伊人中文字幕| 国产精品盗摄 偷窥盗摄| 人妻在线视频| 性生活久久久久久久久久| 91路www| 大鸡巴久久| 18禁美女裸体无遮挡啪啪| 神马久久免费电影观看| 蜜臀视频网站| 无套内射性感少妇视频| 久久久久久久久九九久孕交| 久久噜噜噜精品国产亚洲综合| 中文字幕精品码亚洲| 国产亲戚伦亲在线| 日本在线不卡123| 日韩色图 一区二区| 乱伦熟女专区| 99精彩视频| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 精品视频一区二区| 精品国产91av一区二区三区 | 草伊人高潮喷水超碰| 91男人综合| 美女诱惑久久| 久久精品国产亚洲AV成人直播| 国产亚卅97| 国产1024在线播放| 激情深爱五月天| 亚洲精品黑丝| WWW操逼| 欧美三级不卡| 蜜臀久久99精品久久久久久酒店| 久久亚洲AV无码专区首页| 免费看污网站| 噜噜噜亚洲精| 午夜福利免费精品视频| 久久天天性久久伊人| 亚洲人精品久久久| 国产一区二区三区精品观看啪| 久操在97| 色欲三区| 日日噜噜夜夜久久亚洲一区二区 | 国产精品白丝| av九九| 丝袜天堂网| WWW操逼| 超碰天天久久79| 91亚洲色人| 97中文字幕色| 欧美日韩另类在线播放| 色老牛| 免费黄色片。| 黄久在线| 欧美亚洲另类在线蜜桃| 艳美熟妇先锋一二三区| 精品国产Av无码久久久伦古装| 五月婷在线| 日韩一级二级三级在线不卡观看完整| 日本人人操人人操| 久欲AV| 99久久99九九99九九九| 深夜激情| 欧美第一页性| 国产精品白丝在线播放| 天天影视激情欧美| 99视频这有这里有精品| 国产不卡片| 国产家庭乱伦性爱视频| 极品后入免费视频| 免费精品人妻一区二区三| 欧美偷偷网| 欧美性生活综合| 国产9l 大屁股| 99久久无色码| 深夜视频| 国产性感骚丝袜在线| 高清国产精品无码| 欧美美女后入| 婷婷色婷婷| 日本αv| 欧美日韩天堂| 九九九九久久久| 欧美色九九| 欧美激情超碰777| 亚洲欧美国产成人综合不卡| 欧美激情久操网| 大逼色网站| 亚洲日韩美女丝袜美腿人妻视频| 9九九九九视频在线观看| 91肉丝| 青青草精玖玖69精品| 操逼操网| 男人午夜天堂| 精品人妻一区二区三区视频| 亚洲天堂热| 日本欧美韩国国产在线| 亚欧美综合| 国产欧美日韩女同性恋ww喷水精品| 国产福利一区二| 国产免费一区| 大香蕉免费中文| 人妻一二三区| 96精品久久| 北野未奈加勒比av| 亚洲高潮少妇| 日本性爱少妇| 国产精品第一区第一页| 国产精品第一页国产大屁股视频免费区i| 五月丁香啪啪啪| 精品偷拍13p欧美dodk视频| 久久久91| 久久久999网站| 天天色综亚洲91污| 小日子操bb在线看| 最新亚洲黄色免费电影| 人人澡人人澡人人| 中美日韩毛片| 人妻激情偷乱视频一区二区三区 | 欧美大码在线视频| 午夜无码精品免费看性色| 国产精品视屏| 麻豆一区二区三区在线看 | 欧洲自拍第一页| 青青欧洲黑| 欧美黄片欧美黄片xxx| 国产91精品在线免费| 伦理弟一页| 极品内射| 看看小穴| 超碰人妻在线| 国产免费一区在线观看| 干干干天天| 日本操逼视频免费| 天天综合网在线观看| aV中文麻| 91N综合网在线| 欧美性爱一区二区三区四区| 日夜久久久九九九久| 蜜桃色色网站视频三区| 亚洲成A∨人影院在线欢看| 精品一区二区成人| 丰满美女一级毛片在线播放| 69XX一中文字幕人妻91| 夜夜爽夜夜爽| 97神马久久| 久久久四区| 好属操| 极品色综合| 人人操人人肉久久精品| 欧美碰碰综合色| 久9爱精品| …中文字幕亚洲乱,97人妻无码费视… | 日韩久久艹| 五月天综合在线| 人看人人摸人人操| 亚洲色图殴美色图激情乱伦| 午夜福利av电影在线| 精品女同一区二区三区| 久久久九九| 欧美久久久15P| 内射黑人| 91美女視頻| 亚洲激情欧美色图| 国产精品色| 天天日天天看| 久久亚洲中文字幕视频| 看日韩黄片| 久久精品国产亚洲妲己影视| 欧美性爱第一区| 日韩 欧美 视频 在线 一区| 偷拍自拍在线视频观看| 狠狠色噜噜狠狠狠狠狠色综合久久| 日本操逼二区| 91精品黄在线观看| 国产欧美精品日韩区二区麻豆天美| 欧美亚洲综合色| 啊啊啊啊啊好大好舒服想要| 久久同城AV| 综合大香蕉美。| 78m成人视线| 成人五月天丁香激情综合| 操逼无码操逼| 蜜乳AV网址| 日本99视频| 欧美日韩情色一区二区| 色综合久久夜色精品国产天堂| 久久久一二三四区| 94色色电影网| 亚洲天堂中文字| 色色激情五月天| 久久综合乱子伦国产免费| 美女大乳久久久久久久女人18| 天操天操夜操夜月月年年操操 | 最新av中文字幕高清| 大香蕉强奸乱伦| 色五月婷婷在线| 91爰爱欧美| 4虎在线视频| 后入国产| 影音先锋乱| 精品人妻1237| 精品乱子一区二区三区99| 日韩高清一二三| 超碰在线人人射| 黄页视频网站野外| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 92性色国产午夜福利在线661| 国产成年免费大片黄在线观看| 97天天摸天天碰| 亚洲女人毛茸茸91| 蜜臀久久99精品久久久电影| 精品少妇人妻av久久免费| 国产蜜臀精品一区免费尤物| 欧美色图人妻| 尹人免费观看视频在线| 国模精品一区二区三区苹果色戒| 91狠狠综合久久久久久| 久久伊人东京热| 国产精品成人福利在线| 天天欧美欧美亚洲网| 精品二区久久| 人人操,操人人| 人人超碰在线观看黄| 欧美91精彩| 欧美18 在线观看| 999日韩中文精品观看视频。| Aa东京男人的天堂| 色操逼网| 久久啊哟| 蜜臀久久99精品久久久久久成人小说| 欧美日韩一区二区三区四区蜜桃| 久久久久久性爱视频| 男人的天堂kva| 91快色色色色色| 欧美大片天天看| 亚洲欧洲综合| 日本色色色视频| 骚女高跟AV在线| 无码人妻一区二区三区色欲aⅴ | 人澡逼| 亚洲免费成人精品电影| 亚洲熟妇无码一区二区三区| 欧美精品三级黄片| 黄色av片三级三级三级免费看| 欧美 亚洲 大香| 色97欧美| 日韩成人大片在线观看| 亚洲天堂 视频你懂的| 久久久99999久网站| 激情天天视频| 影音综合网| 一起草三级AV电影在线观看| 大香交伊人网| 亚洲图片另类| 中文一区二区婷婷视频| 中文字幕制服诱惑| 色香蕉影院| 啊啊啊啊啊啊啊啊在线观看| 日本特黄f c2| 久久久9999| 国产有码一区| 黄色无码高清黄色无码网站| 一色网男人的天堂| 黑人免费福利视频| 久操 高清| 97爱爱| 国产传媒日本欧美专区| 亚洲国产av中文字幕久久| 99只有精品| 日本免费专区| 午夜精品久久久99热蜜桃的功能特点| 人妻精品视频一区二区| 国产乱码精品久久久久久| 欧美激情中文字幕另类小说| 亚洲AV色图一区| 婷婷久草一区二区三区| 超碰91在线| 国产二区三区粉嫩在线| 在线观看国产黄色| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 国产人妻天天干精品| 亚洲久9| 欧美熟妇操操视频| 国内偷拍精品一区二区| 殴美牲| 久久透逼视频| 中文字幕伊人| 日韩国产乱子伦App| 呻吟 欧美 日本 中出| av中文在线| 精精品人妻一区二区三区| 99自拍视频在线观看| 亚洲 中文 欧美 日韩 在线| 五月丁香网站| 婷婷国产精品一区二区| 亚洲成人日韩小说| 久久天天性久久伊人| 97爱亚洲| 高潮嗯啊性感美女久久久| 亚洲一区二区中文字幕| 花花AV导航| 欧美综合 站| 国模限制级电影| 人人操人人舒服| 日本性一区| 夜夜操夜夜爽夜夜高潮| 高清在线偷拍自拍视频| 精人妻一区二区三区| 手机在线视频国内精品| 这里只有精品97| 日本一区三级韩国| 性色av蜜臀av色欲aV| 男人的天堂免费| 中文字幕成人| 91精品久久久久五月天精品| 一本大道青青| 久久少妇视频| 国产又粗又又黄又猛| 免费αⅴ在线观看| 久久久久亚洲Av无码专区老牛影视 | 欧美日韩人妻精品一区二区三区| 精品久一区免费| 久久综合婷婷| 日本性爱不卡视频| 欧美性爱18观看| 男人的天堂VA| 亚洲熟女乱综合一区二区三区| 久久理论字幕视频| 五月婷婷六月丁香| 亚洲三区视频| 少妇熟女1区2区3区| 精品国产乱码久久久影院| 亚洲性少妇| 色呦呦、国产精品| 色老汉玖玖爱| 人妻丝袜无 码视频专区| 久久专区| 国产91 丝袜在线播放| 精品一区二区久久| 97视频www| 久插综合| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 福利在线观看一区二区| 校园春色亚洲无码| 久久欧洲| 亚洲 中文 女同| 激情四射五月天| 综合一区中亚洲国产成人综合精品| 国产啊v在线免费播放| 青草成人免费视频一COm| 亚洲美腿丝袜香蕉影视欧美成人| 亚洲操人| 日本日逼视频网| 欧美一二三级精品在线| av网站免费看| 美女裸体无遮挡永久免费观看网站| 超碰97亚洲| 色九九久九九| 久久香蕉国产线看观看亚洲女人 | 91性网| 99av| 色呦呦国产精品免费看| 国产女同在线观看视频| 四虎影视国产精品|