久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

MySQL多表查詢?nèi)馕觯篔OIN類型、性能優(yōu)化與避坑指南

MySQL多表查詢?nèi)馕觯篔OIN類型、性能優(yōu)化與避坑指南 搞多表查詢很多人一開始是懵的單表 CURD 寫得好好的一到連表就抓瞎要么數(shù)據(jù)對不上要么慢得像蝸牛甚至一條 SQL 能把數(shù)據(jù)庫拖垮。MySQL 里的多表查詢說白了就是“把多張表的數(shù)據(jù)按關(guān)系拼起來”但這里面的門道不少從 JOIN 的類型選擇到連接條件的寫法再到關(guān)聯(lián)字段的索引設(shè)計每一步都可能把你的查詢從“能用”變成“好用”。這篇文章我從頭到尾梳理一遍多表查詢的完整知識體系包括各種 JOIN 的適用場景、一個從零開始的小型實戰(zhàn)、性能優(yōu)化里最容易踩的坑以及一堆實際排查問題的經(jīng)驗。不管你剛?cè)腴T SQL還是寫了幾年代碼想系統(tǒng)補補短板這篇都值得花幾分鐘看完。1. 為什么一定要用多表查詢數(shù)據(jù)拆散與關(guān)系重建1.1 數(shù)據(jù)為什么要拆到多張表你先想一個現(xiàn)實場景做一個電商系統(tǒng)的用戶訂單功能。如果按“方便”的思路來一張表塞下用戶昵稱、手機號、商品名稱、商品單價、訂單數(shù)量、下單時間、收貨地址確實查詢很爽但問題接踵而至。同一用戶買了十件商品用戶昵稱和手機號就得重復存十遍商品價格調(diào)整了歷史訂單里的價格跟著改動還是不改動地址變了往期訂單的收貨信息全亂套了而且這些字段間還存在更新異常、插入異常、刪除異常。所以才要把數(shù)據(jù)拆開。用戶信息放一張表商品放一張表訂單放一張表訂單明細再放一張表。每張表只負責“一類事實”通過外鍵字段把關(guān)系串聯(lián)起來。這就是規(guī)范化的基本思路。但拆完之后你看數(shù)據(jù)的視角就碎了——想看“某用戶最近買了什么”得同時拿用戶表、訂單表、訂單明細表、商品表。這時候多表查詢就是把這些碎塊重新拼接成完整信息的唯一手段。MySQL 的數(shù)據(jù)組織方式也決定了它天然適合多表查詢。關(guān)系型數(shù)據(jù)庫的核心數(shù)學模型就是“關(guān)系”一張表是一個關(guān)系兩張表之間的外鍵關(guān)聯(lián)也是一個關(guān)系。SQL 作為關(guān)系數(shù)據(jù)庫的語言JOIN 就是關(guān)系代數(shù)里的連接運算的落地實現(xiàn)。所以別把多表查詢當成一個“高級功能”它是關(guān)系型數(shù)據(jù)庫的看家本事繞不開。1.2 連接條件缺失時的“數(shù)據(jù)爆炸”笛卡爾積多表查詢最容易被忽視、后果最嚴重的問題就是忘記寫連接條件。比如SELECT u.user_name, o.order_no FROM t_user u, t_order o;這種老式寫法用逗號分隔兩張表如果寫漏了 WHERE 里的關(guān)聯(lián)條件MySQL 會把 t_user 的每一行都和 t_order 的每一行配對一次。用戶表 1000 行訂單表 2000 行結(jié)果集直接變成 200 萬行。這就是笛卡爾積。很多剛?cè)腴T的同學第一次寫多表查詢就栽在這里結(jié)果刷出來一大堆莫名其妙的數(shù)據(jù)以為是自己查詢邏輯寫錯了查了半天發(fā)現(xiàn)問題出在跨表配對?,F(xiàn)代的 JOIN 寫法其實也是這樣。只要 ON 子句里的條件寫在但不符合實際關(guān)聯(lián)邏輯或者干脆漏掉 ON 條件一樣會產(chǎn)生笛卡爾積。比如FROM t_user LEFT JOIN t_order后面什么都不跟MySQL 也會把兩張表全交叉一遍。笛卡爾積在特定場景下是有用的比如你要生成測試數(shù)據(jù)、做交叉組合枚舉。但業(yè)務(wù)查詢里一旦出現(xiàn)全量交叉要么是 SQL 寫錯了要么就是過濾條件沒加全。排查的時候有個經(jīng)驗如果結(jié)果集行數(shù)突然等于兩張表行數(shù)的乘積十有八九是連接條件丟失。1.3 連接的底層邏輯拿一張表的每一行去另一張表匹配拋開各種 JOIN 的語法差異多表查詢要做的事其實非常樸素拿左表的一行數(shù)據(jù)根據(jù)連接條件去右表找對應的行找到就拼成新行沒找到就看 JOIN 類型決定留還是丟。這個匹配過程如果沒有任何優(yōu)化開銷就是左表行數(shù)乘以右表行數(shù)。MySQL 的優(yōu)化器會盡力規(guī)避這種全表匹配比如用索引快速定位右表中符合條件的行或者把驅(qū)動表換成數(shù)據(jù)量更小的那張。理解“拿一行去匹配另一張表”這個模型很多問題就解釋得通了。比如你給關(guān)聯(lián)字段建了索引JOIN 會快很多因為匹配時可以直接走索引查找而不是逐行掃描。再比如連接條件里的字段類型不一致MySQL 需要對其中一列做隱式轉(zhuǎn)換一旦轉(zhuǎn)換發(fā)生在索引列上索引就失效了匹配退化成全表掃描。這些事情稍后詳細講但底層模型先行后續(xù)內(nèi)容都建立在這個匹配模型上。2. JOIN 家族的完整解析從語法到選型2.1 INNER JOIN只要大家都有的那部分INNER JOIN 也叫內(nèi)連接是用的最多的 JOIN 類型表達的是“交集”。它返回的是左表和右表中連接條件能同時命中的那些行。連接條件不成立的左表數(shù)據(jù)、右表數(shù)據(jù)統(tǒng)統(tǒng)不會出現(xiàn)在結(jié)果里。SELECT u.user_name, o.order_no FROM t_user u INNER JOIN t_order o ON u.user_id o.user_id;這個查詢的意思只返回那些確實下過訂單的用戶及其對應的訂單記錄。沒下過單的用戶雖然用戶表里有他的資料但在訂單表里找不到匹配行所以不會出現(xiàn)在結(jié)果里。INNER JOIN 有一個容易被忽略的特點如果右表存在多條匹配記錄左表的那一行會被復制多份。比如一個用戶下了三筆訂單INNER JOIN 之后結(jié)果里這個用戶會對應三行每行是不同的訂單。這個特性在做聚合統(tǒng)計時尤其要小心。你要統(tǒng)計“下單用戶數(shù)”如果直接COUNT(u.user_id)一個用戶有三筆訂單就會被數(shù)成三次。必須配合DISTINCT或者先子查詢?nèi)ブ卦訇P(guān)聯(lián)統(tǒng)計。什么時候優(yōu)先用 INNER JOIN答案是你只關(guān)心兩邊都滿足條件的記錄其他數(shù)據(jù)一概不需要。比如查有效訂單的用戶信息、查有庫存且上架的商品明細、查有對應班級信息的學生名單。內(nèi)連接不會給你意外的 NULL數(shù)據(jù)相對干凈也是三種 JOIN 里性能通常最容易優(yōu)化的。2.2 LEFT JOIN 與 RIGHT JOIN主從關(guān)系的兩個鏡像LEFT JOIN 的邏輯是左表的每一行都保留下來右表根據(jù)連接條件去匹配匹配到了就把右表字段填上匹配不到就把右表字段置成 NULL。RIGHT JOIN 完全反過來以右表為基準保留全部行左表匹配不上就補 NULL。看一個典型例子SELECT u.user_name, o.order_no FROM t_user u LEFT JOIN t_order o ON u.user_id o.user_id;這個查詢會返回所有用戶包括沒下過單的用戶。沒下過單的用戶o.order_no是 NULL。這個結(jié)果和 INNER JOIN 的差異正好暴露了業(yè)務(wù)含義的區(qū)別一個查“所有用戶及其訂單狀態(tài)不管有沒有單”一個查“真的下過單的用戶”。RIGHT JOIN 的應用場景相對少因為大多數(shù)情況下你能通過調(diào)換表的書寫順序把 RIGHT JOIN 改寫成等價的 LEFT JOIN。但有一些復雜場景比如嵌套子查詢里已經(jīng)固定了表的別名含義或者你希望保留右側(cè)副表的數(shù)據(jù)RIGHT JOIN 會更直觀。我個人建議日常查詢統(tǒng)一用 LEFT JOIN保持思維一致性少一個方向就少一層認知負擔。這里有個極其關(guān)鍵的坑LEFT JOIN 的 WHERE 條件要分清楚寫在 ON 里和寫在 WHERE 里完全不一樣。ON 里的右表條件只影響匹配過程即使條件不滿足左表行依然會被保留WHERE 里的右表條件是在 JOIN 完成之后過濾結(jié)果一旦過濾條件拒絕了 NULL左表中原本沒匹配上的行就會被剔除相當于把 LEFT JOIN 悄悄變成了 INNER JOIN。后面單獨展開。2.3 CROSS JOIN 與自連接兩個特別但實用的變種CROSS JOIN 就是笛卡爾積的顯式寫法比如SELECT * FROM t_product p CROSS JOIN t_activity a;商品表和活動表之間的全量組合可以用來批量生成活動推廣組合記錄。這種 JOIN 沒有連接條件結(jié)果行數(shù)是兩張表行數(shù)的乘積使用前必須有意識地控制數(shù)據(jù)量否則秒級 SQL 能給你跑出幾分鐘的大事故。自連接是指表和自身做 JOIN。表面上看是“自己連自己”但處理的是行與行之間有關(guān)系的數(shù)據(jù)。典型場景是員工表和上級的關(guān)系或者商品分類表里的父子層級。SELECT e.emp_name AS employee, m.emp_name AS manager FROM t_employee e LEFT JOIN t_employee m ON e.manager_id m.emp_id;如果不用自連接你需要把同一張表當成兩張獨立的邏輯表來對待分別取別名。MySQL 沒有專門處理樹形結(jié)構(gòu)的關(guān)鍵字8.0 有遞歸 CTE但那是另一套思路而自連接是理解結(jié)構(gòu)關(guān)系最直白的方案。第一次寫自連接容易犯糊涂核心要點就是給同一張表起兩個不同的別名把實例當作兩個獨立對象看待然后按普通 JOIN 的規(guī)則操作。2.4 JOIN 類型橫向?qū)Ρ纫粡埍砜炊Z義差異把四種 JOIN 的語義擺在同一張表里新手對照選型會清晰很多JOIN 類型核心語義左表無匹配時右表無匹配時典型業(yè)務(wù)場景INNER JOIN兩邊交集該行不返回該行不返回查詢有效訂單、已配對記錄LEFT JOIN左表全部保留保留左表行右表補 NULL—查詢所有用戶的下單情況RIGHT JOIN右表全部保留—保留右表行左表補 NULL以右表為主視角的報表CROSS JOIN全量交叉組合——生成組合數(shù)據(jù)、批量匹配自連接本質(zhì)上不是新的 JOIN 類型它是 JOIN 的一種用法用 INNER 或 LEFT 都可以。選型時最重要的判斷依據(jù)是業(yè)務(wù)上你要不要把某張表的“全量數(shù)據(jù)”作為結(jié)果集的主干。需要就走 LEFT/RIGHT不需要就 INNER要生成組合就 CROSS。3. 小型實戰(zhàn)從零搭建一個多表查詢模型3.1 建表和準備數(shù)據(jù)把關(guān)系先理順光講語法不練手等于白看這一節(jié)我們直接搭一個迷你訂單系統(tǒng)把多表查詢的核心套路走一遍。假設(shè)有四張表用戶表、商品表、訂單表、訂單明細表。關(guān)系是這樣一個用戶可以有多個訂單一個訂單屬于一個用戶一個訂單包含多個商品通過訂單明細表來記錄一個商品出現(xiàn)在多個訂單里也是通過訂單明細表來體現(xiàn)。這種用戶和商品之間通過訂單和明細間接產(chǎn)生的多對多關(guān)系正好是多表查詢最能體現(xiàn)價值的地方。CREATE TABLE t_user ( user_id INT PRIMARY KEY AUTO_INCREMENT, user_name VARCHAR(50), phone VARCHAR(20) ); CREATE TABLE t_product ( product_id INT PRIMARY KEY AUTO_INCREMENT, product_name VARCHAR(100), price DECIMAL(10,2) ); CREATE TABLE t_order ( order_id INT PRIMARY KEY AUTO_INCREMENT, user_id INT, order_no VARCHAR(32), order_time DATETIME ); CREATE TABLE t_order_detail ( detail_id INT PRIMARY KEY AUTO_INCREMENT, order_id INT, product_id INT, quantity INT, amount DECIMAL(10,2) );然后插入幾條簡單數(shù)據(jù)三個用戶里有兩個下過單總共兩筆訂單第一筆訂單買了兩樣商品第二筆買了一樣。故意讓第三個用戶沒有訂單這樣后續(xù)對比 INNER JOIN 和 LEFT JOIN 的結(jié)果差異時非常直觀。商品表放四種商品其中一種沒有銷量。3.2 從訂單視角出發(fā)JOIN 多張表拼出完整信息第一個業(yè)務(wù)需求管理后臺要展示訂單列表顯示訂單號、下單用戶、商品名稱、數(shù)量、金額、下單時間。這個需求看起來簡單但如果不 JOIN你拿到的是分散在四張表里的零散數(shù)據(jù)。正確寫法SELECT o.order_no, u.user_name, p.product_name, d.quantity, d.amount, o.order_time FROM t_order o INNER JOIN t_user u ON o.user_id u.user_id INNER JOIN t_order_detail d ON o.order_id d.order_id INNER JOIN t_product p ON d.product_id p.product_id;這里每一層 JOIN 都是必要的訂單要關(guān)聯(lián)用戶拿用戶名訂單明細要關(guān)聯(lián)訂單拿商品明細商品要關(guān)聯(lián)明細拿商品名。留意一個現(xiàn)象第一筆訂單買了兩個商品所以訂單號、用戶信息、下單時間會在結(jié)果里出現(xiàn)兩次分別對應兩行明細。這是多表 JOIN 的正常表現(xiàn)——拼接時右表有多個匹配記錄左表行就會復制。從這個例子里能悟出一個多表 JOIN 的原則先明確結(jié)果需要的字段來自哪些表再決定連接路徑最后用 WHERE 補過濾條件。思路對了SQL 就是照抄路徑。很多初學者一上來就寫 JOIN結(jié)果是表拼得飛起但字段邏輯全亂了。從訂單視角查詢還有一個常見變體如果只想看訂單維度不展開明細可以用子查詢或者聚合把明細先匯總。比如SELECT o.order_no, u.user_name, o.order_time, SUM(d.amount) AS total_amount FROM t_order o INNER JOIN t_user u ON o.user_id u.user_id INNER JOIN t_order_detail d ON o.order_id d.order_id GROUP BY o.order_no, u.user_name, o.order_time;要說明的是不要把非聚合字段隨意塞進 GROUP BY 里。在 MySQL 的 ONLY_FULL_GROUP_BY 模式下select 列表里出現(xiàn)沒有被聚合函數(shù)包裹且不屬于 GROUP BY 的列直接報錯。GROUP BY 的原則性寫法是先確定分組粒度這里是訂單用戶時間再把粒度字段原樣 select 出來其他字段一律聚合處理。3.3 從用戶視角出發(fā)保留全部用戶的 LEFT JOIN第二個業(yè)務(wù)需求要一張報表統(tǒng)計每個用戶一共下了多少單沒下過單的用戶也要出現(xiàn)在列表里訂單數(shù)顯示 0。這就是 LEFT JOIN 的典型場景。以用戶表為主表關(guān)聯(lián)訂單表再對訂單做計數(shù)SELECT u.user_id, u.user_name, COUNT(o.order_id) AS order_count FROM t_user u LEFT JOIN t_order o ON u.user_id o.user_id GROUP BY u.user_id, u.user_name;注意 COUNT 這里必須用COUNT(o.order_id)而不能用COUNT(*)。LEFT JOIN 之后沒下過單的用戶對應訂單字段全是 NULL但行還在。COUNT(*)數(shù)的是“結(jié)果集有多少行”沒下過單的用戶那一行也會被數(shù)成 1。COUNT(o.order_id)數(shù)的是“這個字段非 NULL 的數(shù)量”沒下過單的用戶這個字段是 NULL所以正確計數(shù)為 0。這是多表查詢里一個特別經(jīng)典的坑面試題也愛出但工作中一急真的會寫錯。如果還想看到“沒下過單的用戶”只取一次而不是分成多行LEFT JOIN 后加個 GROUP BY 或者改成子查詢都可以。本質(zhì)上統(tǒng)計需求決定了 JOIN 的形態(tài)按行展示就 JOIN 展開按維度匯總就 GROUP BY 收攏。3.4 從商品視角出發(fā)找出“沒人買”的商品第三個業(yè)務(wù)需求運營想知道哪些商品從來沒有出現(xiàn)在任何訂單明細里以便調(diào)整商品狀態(tài)。思路是用商品表做左表LEFT JOIN 訂單明細表然后篩選出明細表字段為 NULL 的行SELECT p.product_id, p.product_name, d.detail_id FROM t_product p LEFT JOIN t_order_detail d ON p.product_id d.product_id WHERE d.detail_id IS NULL;這個 SQL 完美體現(xiàn)了 LEFT JOIN 加 NULL 過濾的組合威力。連接條件保證了商品表每一行都保留沒被任何訂單引用到的商品在 JOIN 結(jié)果里它的d.detail_id是 NULL。然后 WHERE 里只保留 NULL 行就得到了從來沒有被購買的商品的列表。這個模式可以引申出很多變體查沒有發(fā)過文章的作者、查沒有分配項目的員工、查沒有任何子分類的頂級分類。全流程都是“主表 LEFT JOIN 子表 子表主鍵 IS NULL”。把這個模式記住比臨時從零想更快也更不容易寫錯。4. 多表查詢的性能優(yōu)化從“能跑”到“跑得快”4.1 關(guān)聯(lián)字段索引JOIN 快慢的分水嶺多表查詢最影響性能的通常是 JOIN 關(guān)聯(lián)時做的“匹配”。MySQL 要拿左邊表的每一行去右邊表里找滿足連接條件的行。如果右表的關(guān)聯(lián)字段上沒有索引MySQL 只能全表掃一遍逐行比對左表 1000 行右表 100 萬行那就是 1000 次全表掃描想想都嚇人。一旦在右表關(guān)聯(lián)字段上建了索引MySQL 可以在索引里快速定位到符合條件的行時間從線性退化到對數(shù)級。經(jīng)驗規(guī)則是被驅(qū)動表的關(guān)聯(lián)字段一定要有索引。查出哪張表是被驅(qū)動表用 EXPLAIN 就能看到。哪些字段應該加索引經(jīng)常出現(xiàn)在 JOIN ON 子句里的字段、WHERE 過濾字段、ORDER BY 排序字段。在我的訂單例子里t_order.user_id、t_order_detail.order_id、t_order_detail.product_id就是典型的索引候選。組合索引也有講究如果查詢經(jīng)常以user_id和order_time為條件建(user_id, order_time)這樣的聯(lián)合索引比兩個單列索引更高效。4.2 驅(qū)動表選擇小表驅(qū)動大表多表 JOIN 時MySQL 會選擇一個表作為驅(qū)動表先讀取它的數(shù)據(jù)再用這些數(shù)據(jù)去匹配另一張表。驅(qū)動表的每一行都要去被驅(qū)動表里找一次匹配。因此被驅(qū)動表的掃描次數(shù)近似等于驅(qū)動表的行數(shù)。這就是“小表驅(qū)動大表”原則的來源如果驅(qū)動表只有 10 行被驅(qū)動表有 100 萬行一共只需執(zhí)行 10 次索引匹配反過來驅(qū)動表 100 萬行被驅(qū)動表 10 行就是 100 萬次匹配。雖然優(yōu)化器會自動選擇較優(yōu)的順序但優(yōu)化器不是萬能的統(tǒng)計信息缺失、條件復雜時也會選錯。這時候你可以手動干預比如改變 FROM 子句中的表順序、調(diào)整 JOIN 順序甚至用STRAIGHT_JOIN強制指定連接順序。什么樣的表算“小表”不是說行數(shù)少就一定小而是經(jīng)過 WHERE 過濾后真正參與 JOIN 的行數(shù)少。一個 100 萬行的表WHERE 過濾到只剩 100 行它在這個查詢里就是小表。所以寫 SQL 時盡量先把過濾條件下足讓每個環(huán)節(jié)進入 JOIN 的數(shù)據(jù)量都先瘦身。4.3 EXPLAIN 命令讓優(yōu)化器把執(zhí)行計劃交代清楚任何多表查詢慢的問題第一步不是猜而是看執(zhí)行計劃EXPLAIN SELECT u.user_name, o.order_no FROM t_user u LEFT JOIN t_order o ON u.user_id o.user_id WHERE u.phone 13800000000;結(jié)果里的 type 列是關(guān)鍵如果出現(xiàn)ALL說明是全表掃描出現(xiàn)range說明在索引范圍掃描ref或eq_ref說明精確使用了普通索引或唯一索引這是 JOIN 里最理想的狀態(tài)。rows估算的是掃描行數(shù)如果比預期大很多說明優(yōu)化器認為需要檢查的行太多了。還有個細節(jié)Extra列如果出現(xiàn)Using join buffer說明被驅(qū)動表沒有有效索引MySQL 不得不在內(nèi)存里用 join buffer 來做連接這種查詢在大數(shù)據(jù)量下會非常痛苦。復制出來 SQL 檢查一下給被驅(qū)動表的關(guān)聯(lián)字段補上索引這個提示通常就會消失。執(zhí)行計劃不是一成不變的數(shù)據(jù)量變化、統(tǒng)計信息的更新、參數(shù)調(diào)整都可能導致計劃變化。線上 SQL 如果突然變慢第一件事就是重看 EXPLAIN跟歷史執(zhí)行計劃對比很多性能問題都能從計劃變化里找到線索。4.4 連接條件里的“隱形殺手”函數(shù)與隱式類型轉(zhuǎn)換很多人知道 WHERE 里對字段用函數(shù)會導致索引失效但在 JOIN 的 ON 條件里犯同樣的錯卻不容易察覺。比如SELECT * FROM t_order o INNER JOIN t_user u ON DATE(o.order_time) DATE(u.create_time);這種寫法MySQL 沒法直接使用索引定位o.order_time因為每條記錄都要先被DATE()函數(shù)處理一遍才能去匹配。函數(shù)處理之后索引的順序被打亂優(yōu)化器只能放棄索引。改成o.order_time 2024-01-01 AND o.order_time 2024-01-02這樣的范圍條件索引就能正常用了。隱式類型轉(zhuǎn)換更隱蔽。假設(shè)t_user.user_id是 VARCHAR 類型存了字符串t_order.user_id是 INT你寫ON t_user.user_id t_order.user_idMySQL 會把字符串轉(zhuǎn)換成數(shù)字去比轉(zhuǎn)換過程中索引可能失效還可能產(chǎn)生奇怪的匹配結(jié)果。經(jīng)驗之談關(guān)聯(lián)字段在設(shè)計時就該統(tǒng)一類型否則一邊要改數(shù)據(jù)一邊要改 SQL兩頭受罪。另一個容易被忽視的問題ON 條件里盡量不要寫不必要的表達式運算。每行都要算一次量大了就是整體性能下降。比如你有a.price * b.quantity這種計算放在 WHERE 里過濾就比預先把金額字段存下來再關(guān)聯(lián)要慢得多??臻g換時間在數(shù)據(jù)表設(shè)計里一點也不丟人。5. 高頻踩坑實錄多表查詢問題排查與避坑指南5.1 結(jié)果集多了很多行最常見的原因是 JOIN 右邊存在一對多的匹配關(guān)系。比如用戶表 JOIN 訂單表一個用戶有 5 筆訂單結(jié)果里用戶信息就重復 5 次。很多人沒意識到這一點直接拿結(jié)果渲染頁面發(fā)現(xiàn)列表出現(xiàn)大量“重復”記錄。排查方法很簡單檢查 JOIN 的兩個表的關(guān)聯(lián)字段是否唯一如果右表關(guān)聯(lián)字段不唯一結(jié)果集膨脹是必然的。另一種原因是 ON 條件寫寬了。比如關(guān)聯(lián)訂單明細時把商品表的連接條件寫成了d.product_id p.category_id類型對不上但能匹配上部分數(shù)據(jù)就會產(chǎn)生垃圾行。這種問題要結(jié)合業(yè)務(wù)數(shù)據(jù)反推用 DISTINCT 看看關(guān)鍵字段取值是否符合預期。5.2 結(jié)果集少了行LEFT JOIN 被 WHERE 悄悄改造成 INNER JOIN這個坑幾乎每個寫 SQL 的人遲早會遇到。舉個例子SELECT u.user_name, o.order_no FROM t_user u LEFT JOIN t_order o ON u.user_id o.user_id WHERE o.order_time 2024-01-01;表面上看用了 LEFT JOIN意圖是“所有用戶及其 2024 年后的訂單”。但實際執(zhí)行后那些沒有匹配到訂單的用戶o.order_time是 NULLWHERE 條件NULL 2024-01-01不成立這些用戶直接被過濾掉了。結(jié)果集等價于“只有 2024 年后下過單的用戶”LEFT JOIN 白寫了。正確寫法是把時間過濾條件挪到 ON 里SELECT u.user_name, o.order_no FROM t_user u LEFT JOIN t_order o ON u.user_id o.user_id AND o.order_time 2024-01-01;這樣過濾發(fā)生在匹配階段沒匹配上的用戶依然保留只是訂單字段為 NULL。判斷經(jīng)驗如果你想保留左表的全部數(shù)據(jù)右表的過濾條件一律放在 ON 里如果你確實只要滿足條件的匹配數(shù)據(jù)過濾條件放 WHERE 里也沒問題但要想清楚語義。5.3 NULL 值參與比較的“消失的數(shù)據(jù)”多表 JOIN 之后沒有匹配記錄的右表字段是 NULL。你可能會想把這些 NULL 值用 0或者 0過濾掉結(jié)果發(fā)現(xiàn)有些有值的數(shù)據(jù)也不見了。原因是 SQL 的三值邏輯NULL 不等于任何值也不等于 NULL任何與 NULL 的算術(shù)或比較運算結(jié)果都是 NULL。o.order_no N/A永遠不可能把 NULL 匹配上。想要把 NULL 找出來用IS NULL想要把 NULL 替換成默認值用IFNULL(o.order_no, N/A)。寫入的時候也要小心避免往關(guān)聯(lián)字段寫入 NULL否則 JOIN 時那一行會直接丟失匹配資格。這是我見過的一個隱蔽問題某系統(tǒng)的訂單表 user_id 因為歷史數(shù)據(jù)問題有空值LEFT JOIN 用戶表后那條訂單的 user_id 就顯示 NULL排查了半天才定位到源頭。5.4 多表 JOIN 時的子查詢與預聚合策略業(yè)務(wù)復雜時一個查詢可能要 JOIN 五六張表每一層都套一個子查詢。寫到后面 SQL 能看懂都不容易性能更加不可控。我的經(jīng)驗是能先聚合的先聚合能先過濾的先過濾讓每一層 JOIN 的輸入盡可能小。舉例要查每個訂單的總金額和商品數(shù)量如果一個訂單有 100 個明細直接 JOIN 明細表后 GROUP BY 訂單中間產(chǎn)生的臨時結(jié)果會膨脹 100 倍。換成先對明細表做聚合SELECT order_id, SUM(amount) AS total_amount, SUM(quantity) AS total_quantity FROM t_order_detail GROUP BY order_id;再和訂單表、用戶表 JOIN最終數(shù)據(jù)集小很多執(zhí)行也快不少。這個思路適用于絕大多數(shù)報表型查詢寧可多寫一層子查詢也不要讓中間結(jié)果冗余膨脹。多表 JOIN 的順序也有講究。盡量把過濾條件最嚴的表放在 JOIN 鏈的起始位置讓它作為驅(qū)動表先瘦身把數(shù)據(jù)量小、關(guān)聯(lián)字段有索引的表放在被驅(qū)動位減少匹配次數(shù)。雖然優(yōu)化器會做自動優(yōu)化但在復雜查詢里手動干預連接順序執(zhí)行效率往往能看出明顯差距。我個人在實際項目里的體會是多表查詢從語法到熟練真正分水嶺不在會寫幾種 JOIN而在于能預判這個 SQL 在真實數(shù)據(jù)量下的表現(xiàn)以及能看懂執(zhí)行計劃回推哪張表該加索引。寫 SQL 之前先畫一遍表關(guān)系圖把查詢的主干表想清楚寫出來的代碼自然穩(wěn)。手上的項目如果數(shù)據(jù)量已經(jīng)上來了強烈建議專程花時間把最常用的幾條多表查詢逐個 EXPLAIN 一遍你會發(fā)現(xiàn)優(yōu)化空間往往比想象中大很多。最后分享一個我自己的習慣凡是有 JOIN 的查詢必須看一眼執(zhí)行計劃里有沒有全表掃描沒有全表掃描才允許上生產(chǎn)環(huán)境。這個習慣幫我避掉了很多次隱藏的慢查詢事故。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
成人热久久精品| 夜精品久无码| 欧美翘臀视频网站一区二区三区| 九九热久久99精品re| 色色99| 精品少妇人妻av久久免费| 九九九九九九九九九五码| 欧美日韩另类在线播放| 日韩在线观看AV| 91oumei| 成人免费毛片| 午夜啊啊| 欧美日韩美女精品久草一区二区三区| 色九区| 国产性爱在线视频一区二区| AV女优男人的天堂| 天天天堂影视日韩亚洲91| 自拍偷拍2025在线观看| 免费少妇一区二区| 大香蕉狠狠爱| 超碰吊日色| 天天日天天舔天天喷天天射| 九九干| 亚洲精品国产专区在线观看| 精品综合久久久久久97| 精品久久久无码| 97网站在线观看| 极品后入免费视频| 四季AV综合网址| 亚洲无套久久嗯嗯| 国产精品成人无码av| 亚洲人妻中文在线视频| 亚洲AV色图| 大香蕉手机在线| 久久国99999| 欧美制服网站美腿丝袜| 欧美黑人猛交春色影视大全| 亚洲综合在线视频| 69超碰综合| 国产在线观看91精品一区| 色图四区| 超碰在线人人射| 九九九精品美女| 后入合集| 久久久精选| 粉嫩av一区二区三区天美传媒| 天堂资源站| 偷拍综合亚洲| 人妻 欧美亚洲| 亚洲91射| 亚洲天堂五月天国产| 综合久久97| 操操操五月天婷婷丁香影院| 无码区蜜乳| 黄色在线网站| 免费精品人妻一区二区三| 亚洲系列第一页| 欧美成人一区二区三区在线播放| 国模少妇一区二区三区| 黄色大片一区二区密桃丝袜| 中文字幕精品久久久久人妻红杏ⅰ| 久久99手机免费视频| 日逼国产| 日韩天天本| 超碰97人妻免费在线| 日韩在线欧美精品一区二区| 国产69精品久久久久99尤物| 亚洲色鬼| 久肏视频字幕| 天天躁日日躁xxxxx| 亚洲色五月| 久久久久久久久久久久黄色| 张柏芝国产一区在线观看| 国产一区二区a毛片| 男人的天堂不卡一区二区| 色哟哟-国产专区| 欧美少妇内射| 国产精品久久久久无码Av网曝门| 国产精品电影| 久久99网站| 51一区二区三区| 日韩偷拍色图| 天天欲望网| 蜜乳AV.COM| 日本加靬比网站发布页| 97超碰热线| 黄色免费一级在线毛片| 国产性刺激| 东京热一区二区中文字幕| 强免费黄色网址| 啊啊啊啊啊啊啊在线| 一级人妻性爱视频| 国产精品午夜成人福利| 久综合国内精品自在自线| 小草精彩毛片| 亚洲好看强奸乱伦| 玖玖爱伊人玖玖爱| 综合久| 91亚洲欧美激情| 五月色综合| 日韩综合无码一区久久92| 亚洲综合色男人网| 国产亚洲精品无码三区| 日韩二区三四区五区六区在线看| 96爱综合| 亚洲日韩av一区二区三区百合| 啪啪啪亚欧美视频| 国产SV一线| 伊人久久在线视频观看| 久久婷婷成人综合色怡春院| 日本久操视频| 欧美中出1| 国产精品白丝| 视频黄站| 欧亚不卡| 久久久草成人网站久久久草成人久久久草久久久 | 综合欧美色图| 亚洲天天艹| 国产精品第一区第一页| 啊啊啊啊在线观看网址| 欧美顶级黄片AAAAA在线免费看| 久久久久久97| 一二三区视频在线观看| 熟女AV一区| 国产视频一区二区在线观看| 久超碰在| 偷拍在线观看视频| 91九久| 国产懂色精品国产av| 亚洲综合首页| 伊香蕉综合久久久久久久噜噜噜| 97精品97| 神马久久久久久伦理片| 中文字幕久久婷婷丁香五月天| 欧美日日人人天天| 婷婷九月国产| 青青草AV色| 国产丰满少妇久久久精品影院| 色妺妺在线视频| av天堂5| 色噜噜人妻丝袜a∨先锋影| 成人精品久久久午夜福利| 野狼激情网| 职场同事知名国产国产精品久久欧美日韩 | 中文字幕久久亚州无码| 亚洲限制级| 台湾大香蕉99热| 天天日天天射天天干| 另类综合另类| 9热9热综合网| 中文字幕欧美日本乱码一线二线 | 日本在线视频导航| 久久五月天婷婷| 国模吧 一区二区三区| 自拍偷拍2025在线观看| 尹人大香蕉视频在线| 亚洲色偷偷色噜噜狠狠99网| 搡老女人老妇女老妇老熟女怎么读| 欧美精品在线观看| 欧美亚洲宗合色性图| 一区e区三| 超碰99re| 日韩激情中文字幕有码| 熟女丰满人妻一区| 久久久久久99999国产精品| 国产999精品久久久| 99亚洲国产精品色一区二区三区| 久草福利在线资源站| 97网址www| 日本新免费二区三区| 99re99| 免费亚洲黄色视频在线观看 | 蜜臀久久99精品久久久久| 国语对白露脸XXXXXX| 秋霞一级视频在线观看免费| 99久久com免费视频′| 欧美 综合 亚洲| 成人午夜高潮av猛片| 五月丁香社区婷婷日韩欧美精品影院| 久久精品视频久久久| 国产诱惑| a片自拍直播视频| 久操网无码在线| 亚洲丝袜诱惑| 骚女天天综合网| 999岛国大片| 激情五月天婷婷| 亚洲春色一区二区三区| 天天躁日日躁XXXXYY| 久久久久久久久久久999| 91天堂网| 国产精品乱码久久久久久久久久久久| 97欧美资源| 丰满岳乱妇一区二区三区| 91人妻人人妻| 国产女s强制榨精视频| 欧美狠狠弄| 26uuu最新| 亚洲AV无码久久久国产精品 | 一区二区三区国产精产| 一级性爱视频免费在线| 精品一区二区三区四区外站| 91在线视频观看国产| 免费福利视频中文字幕| 欧美日本不卡在线| 毛片17S| av网站在线看| 学生妹天天看| 人人摸人人干| 91在线超高颜值国产| 亚洲性图91| 日本三级日本三级99| 在线观看啊啊啊啊啊| 亚洲.欧美.丝袜.中文.综合| 日韩精品一区二区日韩| 一区e区三| 69AV女优男人的天堂| 99久久久无码精品国产人| 中文字幕免费看| 人妻少妇精品一区二区三区| 精品偷拍13p欧美dodk视频| 97久久久精品| 欧美视频在线第3页| yellow网站免费观看日韩高清无码| 久久久一区二区| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 国产地址二三| 91超碰碰在线| 成人av在线播放| 五月天综合网| 日韩AV电影网站| 丁香六月啪| 午夜精品久久一区二区| 亚洲熟女一区二区| 亚洲自拍青操视频| 大乔未久88一区| 台湾佬中文娱乐自偷自拍| 91快色色色色色| 日本高清视频xxxx| 日本ZZ高免费A级视频| 激情婷婷五月天| 翔田千里爆乳巨臀无码| 欧美一级A一级a爱片久久| 久湿久久 | 最新精品久久蜜桃| 久久精品三级影视| 丝袜人妻av一区二区| 亚洲激情色片| 天天舔天天 | 东京热不卡视频| 精品黑人一区二区| 免费精品无码一级毛片牛牛影视 | 好色美女九七第一页| 欧美黄色大香蕉一区二区| 久久9精品| 色拍偷亚洲| 人人操AV| 青娱乐国产盛宴视频| 97色欧洲| 经典丝袜一区| 一区二区三区日韩欧美| 99热在线播放| 久久色人体| 国产最火爆久久国产网站网站| 亚洲国产丝袜在线观看| 宅男午夜在线视频| 亚洲黑丝在线| 粉嫩国产精品久久粉嫩| 婷婷五月天成人| 风流老熟女一区二区三区l| 日韩欧美亚欧在线视频| 国产精品96| 日韩人妻无码不卡网站| 亚洲欧美情色| 久久久久96| 神马九九| 超碰97COm中文| 大鸡巴久久| 婷婷激情四射| 国产午夜精品理论片一二三区区| 国产精品久久泡妞网站| 亚洲麻豆av一区二区| 日本操逼aaaaa| 亚洲欧美999| 国产福利视频精品视频| 日韩99精品视频综合区| 亚洲欧洲精品视频发布| www.丁香五月| 91麻豆天美传媒HD| 欧美久久人体| 黄色AAAAAAAAAAA大片| 日本一区二区成人在线| 成人五月香网在线| AND人妻系列| 偷拍综合亚洲| 超碰95| 92午夜免费福利视频| 国产亚洲99久久精品| 激情五月天综合网| 99精品人人爽| 国产性爱在线视频一区二区| 亚洲暴力强奸AV| 欧美色棕合| 久久久久久综合久久伊人蜜月| 亚洲黑人在线| 操逼日韩无码 | 91原创在线观看| AV色五月天| 日韩极品无码B| 五月丁香网站| 亚洲无码一区成人免费午夜| 国产午夜无码片在线观看影视 | 欧美一区二区观看在线| 9久精品视频在线观看| 91美女在线| 入口操逼网站| 欧美偷拍| 91在线免费观看处女| 日本九九久久99播| 欧美在线第五页| 94色色电影网| 亚熟在线| 国产精品久久久三级无码| 啊啊啊男女| 乱伦熟女区| 天天干夜夜操一区二区| 9九九九九视频在线观看| 91美女色视频亚洲| 尤物一级在线免费观看| 亚洲男人天堂手机版| 自拍大香蕉乱插| 毛片99-全集电影手机免费观看完整-B029AV | 国产后入| 亚洲区 欧美区| 久久综合中文国产| 天天日少妇逼AV| 国产成人精品必看| 少妇熟女1区2区3区| 99色日| 日韩二级| 金典av| 77国产精品| 噜噜噜亚洲精品| 美女黄码视频午夜| 五十路成人在线视频二区三区| 国产一区麻豆免费观看| 亚av顶级裸体一区二区三区四区五区| 亚洲另类久操网| 精品人妻二区三区| 97欧美色资源| 人妻在线中出视频| 久久精品久久久久久久| 丁香五月天久久精品视频一区二区三区| 精品人妻一区二区免费蜜桃| 91亚洲综合| 久久久9品一区二区三区| 欧美一级在线观看成人| 99人人干| www成人啪啪18秘 免费| 精品久久視頻在线| 国产浮力影院第1页| 亚洲欧美激情另类色图| 天天天乱色综合全| 欧美一区二区成人一卡| 亚洲超碰97| 精品国产一区二区三区久久久蜜臀 | 久久久久久久久久久久97| 五月天丁香婷婷综合网站| 国产天天骚| heyZO天然素人无码AⅤ专区| 国产激情久久| 国产农村妇女毛片精品久久| 天天日天天插| 青青草国产欧美非洲黑人| 久久一区无码| 探花熟女,姿勢到位,體驗感也到位| 亚州人妻| 337p大胆噜噜噜噜噜91Av| 日韩三级伊人| 天天摸夜夜摸| 国产剧情AV不卡在线观看| 亚洲天堂资源| 伊人久久88国产女| 97精品熟女少妇一区| 夫妻AV网站| 欧美制服网站美腿丝袜| 这里有精品| 激情在线青青操| 国产午夜视频| 色女综合| 九色婷婷| 人妻日日干| 成人小说另类在线| 疯操AV| 99RE在线视频精品,这里只有精品| 久久青青草原免费视频| 亚洲精品电影| 国产精品粉嫩福利在线| 一道本东京热加勒比一区二区三区 | 亚洲精品国产精品成人| 天天天操天天天爱| 草久久久| 国产久久日韩网站导航| 激情久久久| 天天谢天天干| 肏逼福利网站| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 欧美黄片视频在线观看免费 | 操狠狠| 久久久九九网站| 国产亚洲女v在线观看| 看免费的黄片| 综合网亚洲| 老熟女网站| 久久精品国产97欧美精品亚洲| 久久精品老司| 国产精品一区二区后入| 西西美女视频网| KK色在线影院| 久久精品高清无码一区| 91国产美女丝袜足交精品视频| 麻豆久久久久久久久丝袜 | 一牛一区二区三区久久| 天天天乱色综合全| 亚洲综合113页| 97日视频| 亚洲性猛| 国产一区二区在线看| 日天天九九天堂666| 日韩国产九九精品一区二区三区毛片| 欧美亚洲激情一二三| julia国产在线 | 一区二区三区激情在线观看| 99久久精品国产高潮| 精品久久99| 久久久久亚洲精品| 小电影欧美91| 搡老女人911熟妇老熟女| 中国一级操逼视频| 国产版a级片直播在线| 久久久久久大| 风月影院十八禁| 日韩av电影成人在线| 一级A片女人高潮叫床| 强奸少妇AV导航网| 99后入| 偷拍 欧美 日韩| 秋霞免费AV| 男人的天堂啪啪啪啪啪蜜桃不卡| 超碰这里只有精品| 97人人夜夜精品视频| 天天做日日爱夜夜爽| 夜夜嗨av午夜成人| 欧美 色 亚洲| 操逼啊啊啊91| 97久久精品国产| 欧美性爽xyxOOOO| 成人黑料社久久| 热久久99999| 一区不卡在线观看av| 大奶啊啊好爽| 亚洲欧洲日韩中文字幕一区| 天天色综亚洲91污| 少妇一区二区三区在线观看| 亚洲图片激情小说| 99热超碰| 精品人妻中文字幕4399| 97九色人妻| 一区二区中文| 97精品国产97久久久久久户外免费| 久久久久久久久久久久97| 九九综合久久| 亚洲做性| 91欧美高清| 日韩一级久久毛片| 人妻插插人妻人| 精品视频在线观看精品| oumeizonghese,www| 国产91亚洲精品一区二区三区| 久久久99久9| 精品人体无圣光凹凸| 97伪v| 国产欧美一区激情交| 放黄片放3级黄片没穿衣服| 91久精品| 97爱爱爱| 熟女丝袜视频| 91第一页| 亚洲天堂东京热| 大香蕉草草| 亚洲经典啪啪| 亚洲人妻精品一区二区| 韩国一级婬片A片AAAAA| 91日日夜夜| 天天色播亚洲综合网站| 老鸭窝日丰县女人| 亚洲精品啪视频| 天天爱天天操| 老熟妇综合| 超碰人人操97碰| 在线色资源| 欧洲熟妇xxXx欧美老妇裸体| 91性情| 国产偷人妻精品一区二区在线| 日本免费专区| 久久久久久久久久久久97| av日韩在线观看电影| 9Ⅰ超碰| 欧美人妻色| 99热最新| 黄色网址在线免费观看| 亚洲加勒比| 久久精品店| 操一区| 欧美激情性爱视频网站| 欧美综合亚洲| 黄色小说亚洲| 91丨九色丨大屁股| 亚洲性爱乱操x| 精品国产乱码久久久| 四虎国产成人精品免费一女五男| 激情五月天丁香社区| 欧美福利视频啊啊啊啊| 97人人夜| 国产噜噜噜噜噜久久久久久久久| 天天弄天天操| 欧美成人性爱视频大全| 亚洲成人在线高清| 中文字幕三四区| 久久久97| 激情欧美97| 大香蕉99999| 校园春色 亚洲| 极品久久久久久久久久久久久久| 美国久久一二三四| 亚洲国产欧美日韩人妻日中文| 日韩一级二级在线| 九九久久综合| 97免费视频网| 国产91美女视频| 不卡av在线中文字幕| 亚洲欧美中文日韩视频中国语| 超碰79人人乐| 搡老熟女免费视频| 亚洲全色网| 国产欧美黑人丰满在线| 久久国产对白激情浪潮| 国产精品爽爽v| 色九九九综合| 佐山爱中文字幕| 亚洲图片欧美91N| 夜草欧美| 中文字幕第23区| 伊人久久亚洲色欲综合网站| 亚洲情色 自拍| 91骚熟女| 日日操丁香五月天| 男人的天堂三级| 一区二区三区在线日韩影院观看| 亚洲乱码国产乱码精网站| 天天久久| 欧美精品宗合| 操www| 国产欧美日韩在线观看麻豆传媒公司 | 九九九九一级| 国产超碰97| 狠狠色狠狠色狠狠五月| 色欲Av人妻精品一区二| www.99中文字幕| 中国探花熟女| 中文字幕精品人妻丝袜| 91无码人妻| 国产乱伦搜索结果91P| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 91熟女视频| 午夜操逼不卡| av中文在线| 亚洲自拍一区夜夜操 | 天天欧美| 亚洲欧洲日韩国产自在线| 立川理惠加勒比无码| 天堂日本亚洲欧美| 肉丝中文无码高清| 欧美一级美片在线观看免费| 性爱乱伦一区| 日本一二三高清| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 九久9精品| 超碰98综合网| 看免费一级在线播放毛片| 操逼视频免费日韩无码| 欧美日韩婷婷中文| 老司机午夜精品视频| 日韩有码免费视频| 亚洲天堂久| 中文字幕一二区二三区人妻专区| 97久久精品亚洲| 中文字幕免费在线观看| 国产区91柔拿会所技师| 欧美最婬乱婬爆婬性视频| 91久久久久| 超碰成人最新最好看| 无码视频一区二区| 天天干天天舔| 亚洲激情天堂网| 一区不卡在线观看av| JULIA人妻风俗店中出电影| 1769国内精品视频| 亚洲黄色影视| 久久婷婷成人综合色怡春院| 成人网站 免费观看| 天天舔天天日天天射| 天天视频网站黄| 美女啪欧美一区| 97色网| 性欧美体内射精| 亚洲精品久久久久毛片A片拉屎| 日韩中文欧美| 日韩九九九| 免费看污网站| 17c嫩草51久久91嫩草| 久久久久无码| 亚洲综合贴图91 | 九九热精品免费视频| WWW.操逼.COM| 无码九九| 最新中文字幕精品在线| 东京太热久久久| 亚洲第一精品在线视频| 偷拍盗拍亚洲色图图片| 午夜精品久久999热蜜桃介男人用| 91粉嫩萝控精品福利网站_精品影音先锋国 | 日韩国产十八禁| 欧美性生活综合| 日韩A优精品在线观看| 久久一二三四| 野狼福利社区| 高清无码学生妹高潮| 少妇第一页| 欧美 日韩 另类 亚洲| 国产欧美一区二区| 性色一线| 精品久久久久,69国产成人精| 日韩av不卡在线观看| 久久久久免费看少妇A片特黄| 翔田千里AV无码秘 三区| 男人天堂毛片| 1024精品在线| 91美女视频。| 欧美AB在线| 色五月av| 美女熟妇色| 免费国产电影一区二区| 亚洲欧美精品国产一区二区| 欧美在线播放| 日韩欧美成人午夜福利| 亚洲AV无码国产精品久久久久| .精品人妻一区二区三| 日韩无码视频黄色| 自拍偷拍 日韩无码| 色哟哟511老熟女| 亚洲av乱伦色图网站| 九热视频| 亚洲人在线| 国产第11页| 91天堂丝袜美腿| 国内偷拍精品一区二区| 黄片视频,下载| 久久久久婷婷| 98精品国产乱码久久久久久| 美女网站黄页| 18禁止看精品中文字幕| 日本精品一区二区中文字幕| 色香色香欲天天天影视综合网| 91夜色chaopeng| 少妇的嫩逼图片| a片 xxxx受爽视频| 日韩国产在线观看av| 大香樵伊人网| 日1区2区3区2020| 中文字幕国产在线天堂| 91GD.COM| 伊人991| 九九亚洲| 精品国产乱码久久久久A| 国产午夜视频| AV一起草在线| 91大胆欧美| 不卡二三区人妻少妇| 日韩无码黄色片| 欧美日本天堂| 国产成人精品必看 | 亚洲丝袜色| 东京热综合久久一区二区| 99热这里只有精品地址| 日日干男人的天堂| 九九综合久久中文字幕| 精品国产99| 无码国产Av| 久久久久久久久久黄色网| 三男一女不戴套的A片| 啊啊啊啊嗯嗯嗯用力好爽| 亚欧美综合网| 2017天天透天天通天天擦| 在线视频97| 国产日韩人人| 无码精品一区二区三区潘金莲| 亚洲永久永久永久永久一级一级一级精品| 国产精品久久久| 97中文字幕色| 近亲乱伦一区二区| 青青草公开在线免费不卡视频| 簧片免费看视频| 久久久四区| 天操老女人| 国产91久久九九免费精品无码| 哈哈操 大香蕉| 91蜜臀熟女| 91快色色色色色| 一二三区精品视频| 人人澡综合涩| 色情五月婷婷| 中文字幕一区二区三区字幕| 色情婷婷久久五月天| 玖玖视频在线资源一区二区三区| 麻豆三极片| 色网亚洲人| 欧美性,色九九| 在线看免费无码AV天堂的| 屁股久久久久久| 精品久久艹| 精品久久久久黄少妇| 99热免费| www成人啪啪18秘 免费| 一区操逼| 热99这里有精品综合久久 | 国产一区二区三三视频| 人人妻人人澡人人爽久久av| 国产熟妇一区二区| 综合久草| 国产精品情侣啪啪| 91久久久久久| 99热18| 国产精品亚洲免费| 人、人、摸,人、人、草| 13小男生GAY自慰脱裤子| 久久久人妻| 天天做天天爱| 欧美91变态| 久久精品一区二区三区四区五区| av2014 日韩在线中文字幕| 日本熟妇精品九九| 国产精品夜夜| 黄色成年| 久久综合97| 蜜桃狠狠色伊人亚洲综合网站| 玖玖久久久| 思思热国产高清| 亚洲人体视频在线观看| 囯戸精品高潮呻吟旡码| 天天色天天干天天射| 少妇3P性爱自拍| 2024人人操人人摸| 99亚洲精品| 久久欧美1卡2卡3| 9久久美女首页| 五十路成人在线视频二区三区| 国产日本顶级一区二区三区| 91视频综合| 午夜精品五区| 青青青操| 九九九只有精品| 三上悠亚在线毛片91| 欧美精品成人在线播放| 99自拍视频| 亚洲天堂人人妻| 91色夜| 国产三区免费在线观看| 999在线电影香蕉| 蜜臀av中文字幕| 青青草中文字幕| 无码黑人精品一区二区三区三| 激情综合五月| 色亚州人久干视频在线观看免费版| 91中文字幕在线观看| 国产精品爆乳懂色蜜乳| 免费中文在线| 亚洲综合小视频小说在线观看| 韩日欧亚a级| 在线强奷到舒服的无码视频| 日夜久久久九九九久| 青青草一区二区高清无码视频| 久草国产在线视频| 99999无码| 久久97| 国产剧情一区在线观看| 亚洲综合色图欧美| 强奸乱伦大香蕉网| 91伊人久久在线| 伊人丁香五月婷婷| 中文字幕超碰CAO| 一本精品日本在线视频精品| 欧美在线官网| 激情熟女12P| 在线观看A啊啊啊| 日本三级A片网站com| 丝袜天堂| 夜间福利片1000无码| 亚洲日韩电影| 日本精品88888888| 俺去啦俺来也久久综合| 久久m| 亚洲中文字母在线播放| 国产美女自拍视频| 午夜呻吟欧美| 欧美αv.com| 欧美92| 欧美色图天堂网m| 中文字幕一区二区韩| 老司机香蕉| 精品人妻1237| 在线视频免费播放一区| 欧美色97| 伊人青青草久久| 国模少妇一区二区三区| 国产传媒日韩| 任你干在线视频| 95人妻爽爽人人做人人澡| 亚洲欧美高清无码| 日韩亚洲97| 精品一区二区三区最新| 欧美日韩国产高清在线一二三区| 亚洲熟女综合一区二区| 蜜桃不卡一区二区| 精品妇女一区二区三区| 囯产操逼片| 亚洲春色欧美激情自拍| 九九九国产| 啊啊啊啊啊啊啊啊要喷了| 亚洲最大黄网| 亚洲丝袜色| 欧美一级黄片免费播放| 蜜乳AV一区| 无码久久亚洲高清,| 人人妻人人澡人人爽人人精品浪潮| 草草电影院| 日韩欧美中文字| 丁香五月性| 97超碰欧美中文字幕| 9 7超碰在线免费观看| 久久久久久久久久久久黄色| 国产精品久久久久无码A√| 蜜区区视频79| 亚洲图片偷拍欧美| 少妇第一页| 懂色av中文字幕一区二区三区天美| 欧美午夜色妇色鬼| 国产a级精品| 97超碰亚洲| 狠色婷婷久久一区二区三区_| 欧美自拍偷拍综合图片| 被男人吃奶很爽的毛片| 99re视频这里只有精品| 噜噜在线| 高清无码网址| 欧美丝袜激情| 一区二区亚州激情久婷婷欧美| 天堂伊人久久| 亚洲第一页色网| 综合另类| 无码高清国产AV| 丁香五月激情综合| 国产自产91区13区| 欧美日本视频一区| 欧美日韩国产精品久久色婷婷| 亚洲综合嫩| 乱伦一二三区| 日本大片日本一区二区免费高清| 天天日日舔舔| 精品少妇一区二区三区| 中文字幕第9页萱萱影音先锋| 99视频自拍| 啊啊啊啊啊操我视频| 91精品91久久久久77777| 凹凸视频在线一区二区| 丁香婷婷九月| 欧美91网站| 日韩欧洲操屄视频| 床上啊啊啊一区二区三区| 亚洲精品蜜桃久久久久久久| 97欧美在线| 日韩精品一区的| 我中文字幕6区| 无码人妻精品一区二区中文| 资源在线观一 二| 久久久久成人网| aⅴ日韩成人电影av在线免费看av大全 | 亚洲综合色图欧美| 91三级理论片播放器| 亚洲精品国产精品乱码不卡| 国产精品视屏| 精品国产乱码久久久久久影片| 丰满熟女人妻一区二区三五十一路| 欧美性爱免费短视频| 日韩AV中文字幕电影| 国产精品 视频| 亚洲91网。| 免费久久一级毛片大黄| 超碰在线人妻不卡| 在线观看无码三级少妇| 麻豆久久久久久久久丝袜 | 大香蕉宅男伊人| 午夜一级免费毛片| 十八禁一区二区无码观看| 91精品无码人妻系列| 东北女人高潮视频| www.99色| 伊人一区二区在线播放| 狠操91,com| 狠狠操综合| 被男人吃奶很爽的毛片| 性性久久| 精品一区二区三区蜜桃臀赵总 | 色欲天天综合久久久无码网中文| 天天操女人| 日韩欧美一级特黄大片| 丝袜综合网| 超碰天天操你比| 蜜臀少妇一区二区| 日日黄色三级网站| 色五月婷婷网| 囯产精品久久久久久久久久梁医生| 嗯阿好爽好紧| 97色干| 伊人丁香五月婷婷| 男人的天堂va在线| 天天操天天日天天干| 蜜臀久久99精品久久久老,,| 亚洲成a人片在线观看中文!!!| 日韩三级av片| 后入福利视频| 97国产天堂岛| 69AV女优男人的天堂| 99色视频| 91丨九色丨国产打屁股| 手机在线A片| 国产精品久久妻无码网站| 国产97av| 欧美 亚洲精品首页| 亚洲脚交| WWW美腿丝袜香蕉中文| 精产国品一区二三产品| 91大胆欧美| 花野真衣| 中文有码第五页| 91日日| 天堂在线一区二区| baiduhicn.com。| 干B| 久久久久久久久国产| 精品无码产区一区二| 欧美体内射精| 91高清欧美| 中文乱码字幕观看| 日韩无码一级黄色av片| 免费日韩黄片| 99久久精品无码一区二区| 亚洲制服欧美另类内射| 97香蕉碰碰人妻国产欧美| www.狠狠操| 欧美天堂日韩三级国产传媒| 夜夜 中文视频rt| 综合熟妇一区二区三区| 亚洲综合91| 日韩人妻制服丝袜av| 色婷婷久久| 99综合自拍| 欧亚三区动漫| 亚洲影院无码在线| 国产 日韩 另类 视频一区爱| 亚洲天堂 视频你懂的| 久久久久久性爱视频| 中文字幕第23区| 久久久97| 亚洲各类熟们中文字幕| 麻豆黄四叶草网站| 91精品丝袜久久久久久| 国产综合在线视频网站| 无码色| 97欧美色综合| 久操凹凸视频| 91原创在线观看| 久久久女人| 亚洲九月丁香| 999 久久久| 日韩精品一区二区高清| 中文字幕啊啊啊在线观看视频| 国产免费久久精品99re韩国| 成人五月天丁香激情综合| 熟女六十路| 热的中文 热的有码 热的国产| 国产精品一二三区18| 亚洲黑丝在线| 97超碰欧美手机| 色综合久| 亚洲欧美激情小说| 欧美性爱精品一区二区| 九九九九一级| 超碰人人超在线观看| 国产精品一级二级在线| 久久精视频美日韩在线视频| 骚人妻少妇视频| 精品一区二区成人动漫| 中文字幕精品三级久久久| 最新啪啪视频| 久久久精品,3| 日本亚洲vr欧美不卡高清专区| 精品在线蜜臀| 免费看污网址| 丰满人妻av一区二区三区| 女上位精品在线| 伊人天堂在线| 激情五月天中文字幕色| 欧美熟女妇同| 中国国国产一级特黄毛片| 久久久久久中文| 欧美 中文字幕 一区| 国产精品盗摄 偷窥盗摄| 欧美日韩97在线| 久久99热这里只频精品6学生| 中文字幕第9页萱萱影音先锋| 97免费视频网| 激情婷婷五月天| 人人摸.人人色| 亚洲欧美黄| 亚洲天堂美臀在线| 亚洲人精品久久久喷水| 日本一区二区不卡精品| 久久久一区二区三区四区五区| 免费9 1久久| 五月天婷婷影院| 18禁网站在线播放| 一级婬片120分钟试看| 四虎影视国产精品| 超碰久久网| 日韩 欧美 校园一区| 啊啊啊啊啊啊在线看| 欧美视频在线视频免费va| 18禁免费视频| 久久久精品中文字幕爱豆| 天天综合中文字幕 91| 超碰 国产熟女精品一区| 四季AV一区二区凹凸精品小说| 久久超碰久| 超碰超碰95| 亚洲男人天堂Av| 人妻啊啊人妻啊| 五月丁香激情综合网| 伊人婷婷五月天| 狠狠色色| 成年女人一区| 婷婷三区| 91色伦综合| 亚洲综合图片在线| 丰满熟女人妻一区二区三五十一路| 色欲人妻一区二区在线| 一区二区国产视频在线观看| 色香在线| 久久久久九九九| 亚洲乱色熟女一区| 国产激情在线| 综合激情一一91| 色香欲天天天天综合色| 蜜色网色哟哟| 激情五月婷婷综合| 操一区| 成人乱人伦一区二区| 欧美日韩另类字幕中文| 91欧美性| 天啪| 亚洲欧美日韩二区视频| 欧美一区二区三区日韩| 青青草视频爽一爽| 国产精品九九| 97久久国产| 蜜乳AV一区| 深夜啪啪啪视频免费| 欧美综合网1| 欧美色亚洲| 爱av免费| 9精品久久| 91天射| 97超碰色中文字幕| 啊啊啊啊啊啊啊在线| 中文字幕在线观| 福利色色| 嗯嗯啊啊好大好爽| 97精品国产| 农村妇女一级二级三级视频| 四虎免费看黄| 久久午夜色播影院免费高清| 韩国黄片aaaa| 精品久久大胆人体| 精品蜜乳AV免费观看| 婷婷五月色| 人妻天天爽夜夜爽2| 99久久精品无码一区二区| 日日干日日操五月天伦理视频| 清纯唯美亚洲综合| 婷婷色综合| 91亚洲情色| 99精品无码| 亚洲动态色图| 美女t无毒不卡不卡| 黄色十八禁| 俺去俺来也在线www| 九九免费影片| 日韩成人大片在线观看| 97色欧洲| 91久久久久免| 国内精品嫩模A∨私拍小视频| 97视频观看| 人人操人人插人人摸人人干| 久久超碰免费的| 激情小说成人日本无码一| 亚洲偷91色| 色五月婷婷麻豆在| 精品无码欧美三级| 超碰午夜| 五月激情天| 一个国产在线综合网站| 学生妹天天看| 四虎AV在线观看| 久久性爱精品一区| 日本久久久久久久久久| 又大又白奶子| 日韩探花精品在线视频| 国产又粗又长又大的视频| 97色论| 日本3级一区二区免费 | 色97欧美| 天天看特黄的免费网站| 97人人模人人爽人人| 自拍偷拍国产欧美日韩韩| 天天碰久久入| 五月天综合网| 91亚·色| 五月婷婷大香蕉| 最新岛国大片| 成人午夜高潮av猛片| 亚洲色天堂九9| 青青草男人天堂| 91在线免费观看处女| 一区在线国产播放| 日韩无码三级影院| 成人a v在线播放免费| 欧美综合网A| 四虎AV在线播放| 欧美日韩精品久久久久东北老熟妇| 欧洲一区二区三区免费|