色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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
返回資訊列表
激情文学网伊人| 亚洲色狠| 日韩有码一区三区| 久久久久亚洲Aⅴ无码| 夜夜欢天天干| 手机av亚洲丝袜美腿日韩第一页二页| 色97| 五月丁香| 欧美三级中文字幕hd| 亚洲丝袜诱惑| 婷婷人妻激情| 亚洲国产97在线精品一区| 欧美亚洲第1页| 日韩免费人妻色情网站| 亚洲精品中文字幕一区在线视频| 亚洲国产精品无码AV久久久| 搡老女人老91二区| 久久黄人人爽视频| 亚洲黑人在线| 久久精品店| 亚洲日本大香蕉1| 自拍丝袜美腿人妻| 亚洲免费精品一区| 亚洲中文字幕有码视频一区二区三区| 欧美另类色图片| 国产在线精品偷| 93人人操人人| 日韩色欲久久一二三四区| 国产在线激情| 中文在线视频| 草草影院日本第一页| 婷婷爽人人婷婷爽视频| 蜜臀久久99精品久久久久久酒店| 亚洲se91| 天天激情综合站| 亚洲A曰本VA欧美VA视频| 蜜臀久久99精品久久久久久成人小说 | wwwcaobibi| 欧美白嫩在线放| 国产精品999aaa| 久久久无码精品人妻二区| 久久久111| 强上我不卡卡| 在线视频一区二区传媒| 亚洲一二三| 日日夜夜草草草| 天天干天天日天天射黄色大片| 韩日精品四区| 久久久不能久久久久| 综合色图区| 欧美成不卡网| 色偷综合| 99热这里只有精品18| 91制服丝袜| 91熟女在线| 亚洲日韩精品一区二区| 亚洲天堂东京热| 天天摸天天插天天日| 97日本超碰综合| 久草视频制服诱惑| 怡红院亚洲怡春院av| 亚洲亚洲亚洲天堂天堂| 久久αⅴ| 亚洲中文字幕av| 9/A片| 亚洲激情色片| 97在线公开视频| 91日韩| 手机午夜电影神马久久| 伊人久久88国产女| 亚州欧美总和| 亚洲婷婷丁香在线| 国产精品自拍xxxx| 男人的天堂不卡一区二区| 欧美亚洲激情小说| 国产精品久久泡妞网站| 中文字幕人成乱码熟女香港| 色欲久久综合| 午夜精品久久久久| 美女啊啊啊啊啊啊| 欧美精品自慰系列寂寞少妇| 泰国AV在线观看| 色天堂在线观看| 日韩有码专区| 日韩三级一区| 91在线国产后入风骚翘臀美女素人| 九九九久久久| 91操熟女视频| 黑人白女精品一区| 1024亚洲中文字幕久在线看片你懂的| 农村少妇久久久久久久| 国产人妖视频一区在线观看| 青娱乐大香蕉| 中文字幕乱妇免费视频| 亚州一区二区成人片免费| 桃色五月天| 日韩ab网| 欧美传媒| 国产精品亚洲四五区在线观看| 国产熟女自拍| 欧美aaaaaaa| 亚洲最大黄网| 美女91AV| 九九AV| 国产和美国毛片| 97欧美超碰| 国产原创自拍| 91爱啪| 亚洲毛片一级带毛片基地| 国产自产91区13区| 无码精品久久久久久亚洲| 亚洲最新a在线观看| 久久久久久久久久久久久久久久9| 人人妻人人玩人人澡人人爽| 黄污污污污| 麻豆AV一区二区天美传媒| 日韩精品黄片免费观看| 国产福利小视频高清在线观看| 中文字幕高清20页视频| 亚洲精品白浆高清久久久久久 | 日本A级视频| 亚洲性天堂| 91丨九色丨大屁股| 国产路线专区| 大香蕉伊人色偷偷在线| 久久78| 天天干天天爽| 神马午夜久久| 色网综合网| 亚洲综合另类小说色区亚洲成av人片在www | 91 在线亚洲| 天天夜夜rb| 婷婷久久五月| 91美女小视频| 和协影院中文字幕三区| 色小视频蜜乳| 天天做天天爱夜夜爽毛片试看| 大鸡巴久久久| 日熟女| 另类视频在线| 色婷网| 麻豆美女丝袜人妻中文| 白丝1区2区3区| 久操精品| 人妻免费观看| 91日韩网站| 国内精品伊人久久久久影院会| 116美女午夜| 东北少妇高潮zzzz| 九九九九九精品十六| 一级啊性爱在线视频| 草草草草视频| 一级黄碟| 蜜臀AV一区二区三区激情综合| 91人妻精华帖| 岛国1区2区3区在线观看| 日韩熟女三十乱伦| 久久久久人| 思思热在线观看| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 国产精品久久久久久 百度| 噜噜瑟| 久久久艹艹艹| 成年人性爱日韩| 性色综合网| 天堂精品小草| 丁香五月久久| 偷拍亚洲熟女视频播放| 日韩精品三级| 欧美一区二区成人一卡| 亚洲美乱| 欧美亚州手机在线| 久久久亚洲高清不打码| 100啪啪视频大全| 亚洲日本天堂| 亚洲精品国产精品乱码不卡| 五月婷婷丁香六月| 92午夜免费福利视频| 水多多映视AV| 国产精品久久久久久久免牛肉蒲团| 素颜老阿姨乱情色| 国产91丝袜 在线播放| 超碰人妻中文在线| 亚洲人妻中文高清| 色五月综合| 欧美日韩大陆黑人少妇99| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 久久一二三四五六七八九区区区 | 熟女丝袜视频| 探花激情视频| 色乱二区| 综合久久久久久久综合网| 97亚洲中文| 91精品国产91久久久久久久久久久久| 六月丁香啪啪啪| 在线看的av| 偷拍 欧美 日韩| 日本三级精品| 综合亚州欧美| 97久久精品不卡| 欧洲亚洲人人爽爽视频| 日日骚精品视频| 日韩99神马视频片| 欧美青青视频| 精品九九九九九九九九九| 久久久久久久久久久人妻| 亚洲综合在线视频| 大奶啊啊好爽| 欧美亚涩| 天堂射| 一区二三区四区视频大全套| 超碰午夜| 中文字幕1区2区| 超碰97资源网亚洲| 青娱乐999| 97超碰超碰| 欧美激情总合网| 99色婷婷中文字幕乱色| 无码精品久久久久久亚洲| 久久久999国产精品| 精品人妻一区二区蜜桃视频| 欧美亚洲首页| 97天堂| 国产毛片片精品天天看视频| 日本人妻中文字幕精品| 久草免费在线一区二区| 大香蕉伊人久久| 天天综合网亚洲综合网| 这里有精品| 九九热精品在线| 丝袜AV一二三区| 欧美专利1区2区3区4区5区免费| 色天使大香蕉| 四虎在线视频| 蜜乳中文字幕a在线| 伊人网青青| 国产一区二区精品久久99| 亚洲精品第一| 天天欧美色| 亚洲大色堂| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 日韩在线观看三级电影| 日日操丁香五月天| 欧美亚州手机在线| 情色五月天网| 哈哈操电影| 强被迫伦姧在线观看无码网站| 嫩草伊人久久精品| 9精品久久久久| 97香蕉网| 亚洲精品人妻吞精av| 亚洲18禁| 欧亚 另类 久| ji熟女.com| 伊人欧美大香蕉视频| 91在线一起| 欧美中文字幕日韩在线| 人妻少妇色综合| 日日A∨| 全国男人天堂网| 在线岛国新天堂8| 色五月激情综合网| 色踪合AV| Sekablack无码一区| 日本123区操B视频| 欧美日本天堂| 国产精品午夜福利亚洲综合网| 国产超碰| www.acm成人黄色毛片| 欧美色人| 日韩美女久久一区二区三区| 五十路三区在线| 一区三区啪啪| 四虎影视国产精品| 伊人激情五月天一区二区 | 青青草久草AV| 插穴性爱视频在线观看| 国产黄色动态精品| 91P0RNY大屁股人妻| 九九久久99| 91在线视频观看国产| 天天综合网在线| 不卡在线观看视频| 99热免费| 精品无吗m| 国产原创自拍| 亚州一区二区| 国产剧情一区在线观看| 九九亚洲| 欧美综合色站| 巨爆乳一区二区爆乳区| av72网| 久久久少妇| 国产精品自拍视频 | 国产成人无码久久精品| 日本黄色天堂| 伦伦成年午夜免费视频| 国产男女无套97| 日韩成年人性爱视频| 日韩人妻少妇 一区二区三区| 91中文字幕在线观看| 91精品国产高清久久久久久,亚洲成人| 91久久堂| 99re国产中文字幕| 98久久| 操穴国产| 色欲无码人妻日韩欧美精品| 精品国产乱码久久久兰草影视| 国产精品麻豆成人av| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | wwwxxx日本爽| 人妻喷水| 欧美日不卡| 欧美自拍偷拍综合图片| 天美传媒精品一区二区三区| 日韩欧美视频青青| 国产v片在线免费观看| 欧美 熟女 日韩| 天天干天天狼在线视频| 久久东京热成人| 美女诱惑爱爱| 乳欲人妻办公室奶水| 色九九九九九九| 天天综合AV| 午夜精品五区| 蜜臀久久99精品久久久久久-DVD原版全| 久操高青| 日韩A优精品在线观看| 可乐操亚洲蜜911| 九九久久首页| 天天干,夜夜爽| 久久亚洲欧美中文字幕国语| 亚洲另类色综合网站| 偷拍 精品另类 凸凹了四区| 日韩乱伦AⅤ| 亚洲情色 自拍| 欧色综合| 国产精品电影| 天天色天天干天天射| 亚洲中文字幕熟女少妇一区二区| 大香蕉欧美国产日韩高潮| 91操人视频| 豆花视频操逼网址| 青青草大香蕉视频| 91超碰碰在线| 中文字幕人妻色偷偷久久皮 | 日韩在线女优天天干| 口爆吞精在线观看| 欧美一区二区三区入口| 亚洲欧美不卡线| 东北操逼| 男人的天堂2000| 天天看少妇| 五月婷婷丁香| 性爱av在线免费观看| 欧美18 在线观看| 精品人妻一区二区三区免费视频| 亚州高清色综合| 天天操综合网| 色婷网| 国产高清精品福利| 奇米狠999| 93人人操人人| 男女激烈网站最新| 日韩有码 一区二区三区| 99无码| 清纯唯美激情| 精品少妇一区二区| 欧美色图小说综合| 91无摭挡| 亚洲男人天堂视频| 97网址97| 9.1小视频| 超碰这里只有精品| 黑丝日韩av丝袜av| 色天堂综合| 日韩天堂av电影在线观看| 人妻熟女午夜精品在线| 97五月天| 亚洲AV资源| 欧美色图亚州激情| 美女AV一区二区| 综合91网| 中文字幕色AV| 人妻蜜桃臀| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 欧美亚洲玖玖玖| 97久久久久久久精| 色呦呦、国产精品| 国产精品午夜成人福利| 美美91成人国产精品欧美精品久久久久久久| 91女网站| 亚洲 欧美 另类 日韩 人妻一区 | 国产一区自拍欧美日韩| 干干干天天| 久久久免费的精品| 91丝袜美女国产| 亚洲人成色9999精品久久| 精品区9| 搡老女人老妇女老妇老熟女怎么读| 99久久无色码| 97国产伦理| 婷婷人妻激情| 翔田千里无码一区| 综合免费无码中文| 一区二区三区精品黑丝白丝酒店对鸡 | 天天爽天天干| 色呦呦、国产精品| 97超色| 69久久| 久操免费观看| 国产精品欧美日韩久久| av大香蕉| 久久久久久久久久久久黄色 | 欧美性夜| 国产东北女人在线视频| AV中文在线| 国产农村妇女精品一二区| 日本中文字幕一区| av天堂电影网| 操高情无码| 天天做天天爽| 99国内熟女露脸视频| 狠狠爱夜夜| 在线观看无码三级少妇| 中文字幕高清20页视频| 久草精品一区| 日本黄大片在线观看视频| 亚洲砖码砖专无区2023| 二区熟妇韩日| 精品999999| ?亚洲伊人伊成久久人综合网| 久操B网| 色五月婷婷久久| 伊人96在线| 九九九久久久| 婷婷丁香在线| 丰满欧美放荡少妇在线| 午夜超爽| 9丨久久九九九| 美骚妇av高清在线| 天天干夜夜操一区二区| 亚洲中文字幕久久人妻| 亚洲熟妇丝袜在线观看| 日韩99999| 视频国产精品未满十八禁止在线观看| 精品国产自在在线99| 2020天天色综合| 八人操人人摸人人看| JULIA人妻风俗店中出电影| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 激情文学亚洲| 亚洲欧美国产成人综合不卡| 中文字幕久久精视频久久大全| 综合久久97| 97福利视频| 性欧美| 日韩激情中文字幕有码| 色阁阁AV综合网| 国产精品高清2021在线| 怡红院怡春院| 国产无码精品高清| 97色视频在线| 免费超碰97在线观看| 吉田爱美AV在线| 亚洲欧美综合| 日本精品88888888| 26uuu偷拍亚洲欧洲综合| 中文字幕88av在线| 国产午夜福利电影免费在线观看| 大香蕉综合| 无码137片内射在线影院| 玖玖蜜臀资源网| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 久久久久密臀一区二区| 精品久久久久久中文字幕三区 | 日韩性爱1级片视频| 国产精品suv一区| 久久精品日韩| 久久久久久无码人妻中文字幕| 欧美 亚洲 偷拍自拍| 噜噜噜噜天天狠狠| 性色avv| 久久性生大片免费观看性| 亚洲 se图 欧美电影| 91av一区二区在线观看| 色亚州人久干视频在线观看免费版| 欧美色性爱| 欧美96交| 96精品久久久久中文字幕| AV和黑人在线播放| 老熟女天天操| 岛国小电影| 国产最新小视频在线播放下载 | 国产精品人人爽人人做可爱福利| 超碰久超碰久| 97AV在线免费观看| 日本肏逼视频在线观看| 久久久人妻| 黑人中出21连凳花野真衣| 噜噜噜在线视频| 后入综合久久| 中文字幕一区二区三区人妻少妇在线| 日韩Va亚洲va欧美Ⅴa久久| 午夜操操操| 欧美91精彩| 97天堂| 久久久久久久久久久999| 8050午夜少妇无码| 国产福利精品98视频| 色阁阁AV综合网| 欧美色五月| 高清成年美女黄网站免费大全 | 2024年最新色情网站在线观看| 欧美少妇性乱| 爱爱动态120秒| 多乙久久久久久| 欧美一区二区男人天堂| 超碰社区97| 午夜天堂网| 99综合视频一体| 韩日性爱av| 极品销魂美女一区二区 | 一区二区三区视频| 草草影院日本第一页| 国色综合天| 男人成人黄色视频在线观看免费下载| 国产精品视频电影| 激情第四色| 欧日韩在线观看| 国产超碰国产97| 99久视频| 动漫爆乳3D奶水一区在线观看| 国产粉嫩蜜臀av一区二区三区| 日本精品人妻少妇一区二区| 欧美,日韩综合久久| 91视频伊人| 欧美aa一级片| 黑人与人妻| 九九九热| 亚洲色图欧洲| 怡红院成人视频| 97操综合| 亚洲在钱| 欧美精品欧美精品系列 | 伊人欧美大香蕉视频| 亚洲综合九| 青青草国产盗摄一二三区| 九九九午夜| 啊啊啊啊啊啊在线看| 97色色网| 98一区二区精品| 婷婷伊人綜合中文字幕| 日本色色色| 婷婷五月天色色| 欧美十八禁在线看| 97人人射| 亚洲综合网电影91| 在线天堂999| 日日干日日操五月天伦理视频| 狠狠久久四虎| 精品国产污一区二区三区| 日韩天堂av电影在线观看| 91九久| 熟妇一区二区三区| 亚州综合图片| 九九超碰综合网| 老熟乱一区二区三区四区| 视频在线97| 国产精选视频| 91视频观看网站| 婷婷综合激情| 成年人一级黄色毛片大全在线观看| 国产精品盗摄 偷窥盗摄| 人妻一二三区| 丁香五月色情| 欧美一二在线| 日韩三级av片| 青草成人免费视频一com| 思思视频免费看网站| 日韩欧美视频青青| 色制服丝袜夫妻av一区| 天天视频黄| 97天堂| 男人天堂最新手机版在线青青草| 青青免费在线视频一区| 99re这里只有精品3| 亚洲AV成人无码一二三久久| 色综合美国| 无码少妇精品一区二区60岁老人| 操逼网免费无码视频| 成人性爱电影网| 久久久精品,3| 国产精品网址| 蜜臀无码一区二区| 91精品黄在线观看| 神马久久久久久| 午夜啊啊啊| 日韩女模中文造逼| 亚洲欧美日韩偷拍色图| 欧美色天堂网在线视频| 激情色色| 无码天天操| suv精产一二三区| 欧美中文狠| 五月婷婷综合网| 性暴力欧美猛交在线直播| 亚洲欧美啪啪| 日韩久久超碰色| av资源在线播放天堂| 黑人精品XXX一区一二区| 91激情国产| 神马久久网| 神马视频久久久久久| 99久久久er直播网址| 亚洲婷婷综合网| 91美| 久久久久96| 久久爱超碰网| 日本女厕偷拍| 日本 成 人 小说 电影 一区二区| 精品中文字幕第一页| 操国产高清| 一区二区三区四区理论片| 中文字幕精品亚洲熟女| 老司机深夜18禁污污网站| 操逼网免费无码视频| 天天干夜夜肏| 色五月婷婷中文字幕| 青青五月天| 岛国片在线视频网站| 亚洲一级特黄大片在线播放91| 国产伊人自拍| 色妇综合网| 午夜男女爽爽爽影院视频| 加勒比av网| 色色色色综合网| 观看免费区二区三区二| 超碰1997| 久操九九九九| 麻豆福利视频导航| 日韩ab网 | 亚洲 欧美 综合 91| 色 亚洲 91| 九九九久| 国产自制av蜜乳| 日韩一区二区精彩视频| 天天躁日日躁xxxxx| 亚洲精品日日夜夜52| 色色婷婷五月天| 中文字幕在线观看第二页| 精品乱子一区二区三区99| 亚洲凸凹超碰成人| 男人天堂毛片| 黄色香蕉视频网站一区| 人人看人人摸人人色| 亚洲色鬼| 91精品国产乱码| 欧美在线大香999| 国产极品粉嫩馒头一线天av| 夜色AV无码手机在线影院| 99自拍视频在线| 美骚妇av高清在线| 午夜一区| 中文字幕 国产区| 欧美最婬乱婬爆婬性视频 | 岛国在线一区二区三区| 91在线欧色| 欧美精品一区二区少妇免费A片| 亚洲一区日韩精品中文字幕| 一区二区高清视频| 97色色色综合网站| 不卡中文字幕aⅴ在线| 精品91摸| 中文字幕亚洲热播人妻| 五月久久HDAV| 99ri视频| 搡老熟女免费视频| 60秒免费视频| 久/久精品99看9| 极品销魂美女一区二区 | 精品 码产区一区二-1080P高清在线www-B029AV | 60秒免费视频| 欧美日韩成人在线| 国产成人精品必看| 亚洲色图欧美色18直播在线| 四虎AV无码| 欧美精品1区2区3区| 国产精品久久| 91网站在线播放| 超碰97爽| 无码自拍SM| 久久精品国产亚洲AV清纯| 极品色电影院| 欧美专区第一页| 特级丰满少妇一级AAAA爱毛片| 久久综合97| 爱啪精品一区| 国产成人网址| 人人操人人操人人人操| AV女资源| 亚洲欧洲第二视频在线观看色图| 免费黄色视频网址| 秋霞成人一级在线观看| 久久久日本电影| 国产成人主播| 国产蜜臀精品一区免费尤物| 99热99在线播放激情| 亚洲风情在线观看| 综合性视频99| aaa淫乱视频| 天天日夜夜爽| 亚洲精品啪视频| 免费人成毛片乱码| 97在线播放| 成人在线永久| 国产精品久久发布| 伊人婷婷五月天| 欧美日本一区二区a人| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 人妻超碰青青草98| 精品乱子一区二区三区99| 99re在线观看| 久久久精品成人国产| 国产精品人妻熟女aⅴ| 欧美激情一区| 欧美亚洲手机在线| 亚洲97网站| 免费成人在线熟妇网| 有码免费观看| 丝袜AV一二三区| 日本三级大片| 久久婷综合| 欧美做爰无码A片视频| 久久免费看高潮毛片韩国| 天天日天天爽| 99色在线视频| 熟女突然公开看18禁影片| 色婷婷视频| 天天看天天在线精品| 99久国产精品午夜性色福利| 黄人人操人人操| 人人看黄色视频| 俺去啦俺来也久久综合| 成年无码动漫av片无尽在线 | 极品极品色影院| 成人三级片无码| 丰满少妇乱子伦精品无| 日本国产高清色www视频在线| 亚洲小电影免费涩涩成人在线高清| 黄片视频观看| 国产成年精品高清在线观看91| 久久精品日韩| 蜜乳AV网址| 国产福利第一视频| 大香蕉97久久| 欧亚久久偷拍视频| 天天综合网~91综合网| 日韩欧美久久婷婷网站| 啊啊啊久久| a片偷拍视频| 日韩乱中文 | 国产区在线| 中文一区二区三区影院| 操婢日韩| 欧美色综合影院| 人妻天天夜夜爽一区二区| 欧美成人亚洲精品| AV男人天堂网| 97干在线视频| 国产特级毛片AAAAAA高潮流水| 激情啪啪拍91| 久久国色天香香蕉| 啊啊啊啊啊啊啊网址在线观看| 青青久草| 人妻献身系列第54部| 亚洲码专区| 日本亚洲vr欧美不卡高清专区| 伊人伊人LD| 天天操天天舔| 性爱免费视频成人| 久久久爆乳翘臀一线天伦理视频| 激情欧美日韩女同久久| 熟女少妇一区二区三区| 国产二区三区免费视频| 日本亚洲熟女视频| 欧美97日韩| 91观看 国产白丝| 国产一区二区三区白丝| 五月天婷婷激情| 天天摸夜夜操视频| 欧美少妇色图| 人、人、摸,人、人、草| 亚熟在线| 青青草好吊色| 中国国国产一级特黄毛片| 九九玖玖精品| 国产sv美女内射| 国产人妖视频一区在线观看| 999久久久九| 久99在线免费观看视频| 日本欧美韩国国产在线| 日本曲间由美性生活片| 99精品无码| 人人操人人搞人人草| 精品大久久| 亚洲欧洲自拍| 婷婷久久五月| 蜜桃臀一区二区三区久久| 日本操逼视频不卡直接放| 91oumei| 熟妇高潮二区三区| 性爱视频无打码在线观看| 麻豆AV一区二区| 亚洲图片欧美偷拍| 91强奸乱轮| 中国小夫妻勾搭露脸淫荡对白| 亚洲久久久久| 色蜜AV| 美女诱惑久久| 欧洲色| 欧美BT 亚洲色图| 影音先锋国产精品| 久久久性少妇| 国内精品久久久久影院亚洲| 亚洲天堂日本| 亚洲密乳AV| 久久久久久性爱视频| 九七超碰| 婷婷三区| 高清国产无码av| 夜夜操夜夜爽夜夜高潮| 亚洲欧美日韩免费观看| 91老司机在线视频免费观看 | 久热九九| 欧美性夜| 亚洲欧美一区二区三区在钱蜜桃| 超碰人妻久久| 亚洲情色婷婷五月天| 97欧美| 素人美腿视频网站| 亚洲一区日韩精品中文字幕| 任我爽视频在线观看| 性爱网站一区二区| 一区二区三区无卡视频在线观看| 狠狠操夜夜| 超碰视97中文| 婷婷丁香久久| 久操免费在线| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 岛国黄色大片网站| 欧美色图另类图片| 五月天色图影视| 国产1024在线播放| 亚洲Av噜噜一区二区三区妖精| 成人亚欧免费视频| 亚洲双插| 四虎影库国产精品免费| 夜夜操美女| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 人人操人人色网| 东京热一区二区三区四区五区六区| 一个国产在线综合网站| 欧美国产操逼| 午夜男人一级A片7777| 天天噜| 北京美女一区二区| 六月丁香久久| 国产无码精品成人| 青青草一区二区三区四| 蜜桃臀av在线观看| www.亚洲黄色| 久久精品女同亚洲女同13| 国产91美女高潮| 国产人妖的免费的视频| 国际精品久久久| 日韩久久超碰色| 亚洲福利中文字幕在线| 青青草国产欧美非洲黑人| 超碰98综合网| 夜夜爽爽爽| www.av在线视频| 欧美激情区| 激情五月天校园春色网| 97在线免费看| 天天色播亚洲综合网站| 91neishe| 欧美另类精品xxxx| 亚欧成人一级片在线播放| 欧亚揄拍偷拍精品视频| 国产超碰国产97| 操逼网站视频漫画国产| 电家庭影院午夜69久久夜色精品国产69乱| 亚洲91网站| 小草精彩毛片| 久久美女福利是上海美女| a片自拍直播视频| 久久婷婷苹果| 九九九九免费高| 久久久久久久久久久久久久9999| 最新中文字幕在线亚洲| 国产亚洲福利第一页丝袜| 超碰色图| 亚洲少妇自拍中文字幕懂色| 刺激精品视频| 久久久久久久九九九九九九| 日本色色色| 多乙久久久久久| 在线播放免费av福利片| 91精品人| 男人天堂网站| 欧美日韩中文字幕人妻| 四季av一区二区凹凸精品小说| 天天操美美| 亚洲美女30b| 高清不卡一二三区视频......| 九九色热| 久操精品网| 操逼逼无码| 啪啪啪精品视频| AAAAAAAAA黄片| 国产人妖的免费的视频| 欧美综合国产精品久久丁香| 久久久新亚洲AV| 96久久久久| 啊啊啊久久| 久久内射| 亚州男人天堂| 欧美美女视频| 伊香蕉综合久久久久久久噜噜噜 | 强奸乱伦动态污图免费 | 婷婷激情一区二区三区俺也去| 999日韩中文精品观看视频。| www.婷婷| 久久侵犯人妻爽爽爽| 操少妇很爽av| 亚洲 中文 女同| 有码免费观看| 久久久久久91香蕉国产| 天天日天天舔东京热 | 成人五级久久| 国产性爱在线视频一区二区| 免费?级毛片无码?∨蜜芽试看| 精品人妻1区| 无码黑人精品一区二区三区三| 99在线无码精品秘 入口黑人| 91快色色色色色| 欧美成人一区二区三区在线播放| 三级片网站在线播放| 熟女精品一区二区三区| 狼人综合婷婷激情四射 | 亚洲熟妇综合久久久久久| 欧美激情亚洲情色| 99精品九九九九九九| 欧美第二页| 日本1区2区不卡视频| 日韩欧美国产一区二区三区四区| 亚洲乱码尤物193YW| 99性爱视频| 德国一二三不卡| 粉嫩小泬久久久一区二区| 蜜桃狠狠色伊人亚洲综合| 国产日本顶级一区二区三区| 黄骗免费网站| 久久东京伊人一本到鬼色| 国产精品久久久久综合| 国产av高清版| 精品久久久不卡一区二区| 欧美丝袜亚洲| 2017av无码免费无线播| 欧美性爱1080p| 熟女精品一区二区三区| 欧美少妇第一页| 伊人午夜福利视频| 亚洲男人电影天堂| 欧美极品性爱天天射| 人妻少妇久久久| 日本大香蕉| 特污精品女优骚货黄色视频在线免费观看| 国模无码人体一区二区三| 天天日B夜夜干B时时操B| 国产精品青青草| 天天拍天| 2017av无码免费无线播| 睡产熟女乱伦| 亚洲综合有玛| 精品无码少妇| 四虎影视永久在线免费| 亚洲男人bt天堂| 国产高清在线自在拍69| 日产操逼| 久久精品性| 青青草成人视频在线观看二区| 人人操人人肉久久精品| 亚洲高清无码在线桃色| 成人影 天天操 亚洲| 九九九九一区| 欧美天天干| 色999人与兽| 9美女超碰在线免费观看| 日韩无码操逼片| 精品妇女一区二区三区| 五十路成人在线视频二区三区| 不卡中文字幕aⅴ在线| 激情五月综合网| 久久久草草精品| 欧美人人曰人人操人人射射 | 亚洲一级黄色毛片| 五月天久久久| 中文字幕精品亚洲熟女| 正在播放国产精品一区| 欧美久久九九| 青娱乐黄色录像| 69精品久久久久中文字幕| 亚洲区限制级| 另类亚洲一区二区三区| 日韩三四五区| 日韩9区| 五月丁香影视| 国产国产亚洲一二三久久| 操逼操逼视频操逼| 蜜臀AV成人精品蜜臀| a'v在线资源| 91xingse| 亚洲情色综合| 嗯嗯嗯啊啊啊在线免费观看| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 国产传媒午夜理伦精品| 人妻精品综合中文字幕在线 | 国模少妇一区二区三区| 97超碰色中文字幕| 伊人影院综合是一个与深夜成人在线| 亚洲少妇色图自慰直播| 激情五月天插| 美女干逼2| 26uuu性| 美女让帅哥通她小鸡鸡| 美中日韩无码| 激情情色五月天| 亚欧国产无码精品在线| 欧美日日人人天天| 亚洲AV无码乱码在线观看性色| 国产精品夜夜夜| 97人人超| 啊啊啊啊操死我| 极品白嫩福利在线| 超碰97人人cao| 成人熟女区| 啪一啪免费视频| 99在线精品观看视频中文| 欧美在线视频99| 天天日天天干天天操| 97人人爱人人做人人乐| 91九色蝌蚪在线观看| 97资源站久久| 日本天天操| 天天日天天操天天射河南省| 人妻无码后入| 中文字幕aⅴ在线视频| 精品国产99999| 欧美亚洲激情小说| 国产乱伦亚洲| 大香蕉一人| 欧美性爱97超碰| 欧美性爱免费短视频| 亚洲区限制级 99| 清柠毛片| 日韩性爱1级片视频| nuu12国产麻豆精品| 东京日日夜夜| 欧美日韩黄片精品在线| 九九免费影片| 日韩人妻少妇中文字幕| 91在线超高颜值国产| com 首页 18岁 禁区 女优 免费 精选 同城 | 久久理论字幕视频| 色香色欲天天综合网天天来吧| 中文久久久| 人妻激情在线视频| 欧美有码激情视频一区二区三区| 国产精品视频91久久| 人乳av| 久久一二区四| 一区二区三区精品视频| 国产一区二区三区高清视频| 日韩亚洲97| 天天操av懂色| 精品一区二区人妖| 日韩电影在线观看网址| 人人爽夜夜玩视频| 一个人在线看的黄色电影网站| 激情啪啪拍91| 午夜亚洲WWW湿好大| 91M一社| 97一区二区三区视频| 麻豆天美国美国产AV| 最近2019中文字幕国语免费版 | 久久AV无码1区2区3区| 一区二区娱乐网站| 一区不卡在线观看av| 色综合91好| 在线 欧美 亚洲| 婷婷丁香一区二区三区| 色性欧美| 大香蕉综合| 中国亚洲呦女专区| 免费a级毛片av无码久久精品中文字幕| 99在线精品观看视频中文| 91jk色拍| 日韩免费人妻色情网站| 久久精品国产亚洲AV成人直播| 91色人妻| 国产又黄又爽| 久久久91| 欧美97av| 欧洲亚洲综合| 超碰天天操| 伊人网在线观看| 91亚洲不卡一区| www.狠狠操| 探花激情视频| 新婚人妻扶着粗大强行坐下| 高清无码一区二区三区| 日韩免费簧片| 一级一性爱免费视频| 国产一区二区在线播放| 老熟乱一区二区三区四区| 国产AV线| 欧美九一精品久久久熟妇| 加勒比av中文| 亚洲第一二区另类图| 日日骚 av| 亚洲永久永久永久永久一级一级一级精品 | 日韩乱码Av| 麻豆天美国美国产AV| 天天日少妇逼AV| 青青草日韩无码| 久久麻豆一区二区| 天天干少妇| 蜜臀久久99精品久久久老,,| 亚洲色图大香| 麻豆精品久久久久久久| 殴美,日韩国产伦精品| 激情四射婷婷四五月天| 人人妻人人操人人乐| 不卡人妻少妇精品毛片一区23区视频 | 婷婷人妻激情| 超碰97 线线 在现| 欧美夜夜| 国产成久久综合片| 午夜视频久久久久一区| 日本欧美韩国国产在线| 激情国产乱伦Av| 熟女六十路| 91碰碰| 久久9 9 9精品| 久久蜜色情在线视频xxx免费观看| 中 文字幕一区二区三四 五 区日 日 骚 | 婷婷四五区| 欧美熟女激情|