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

ARTICLE DETAIL

資訊詳情

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

SQL Server中COALESCE函數(shù)詳解:空值處理、類型轉(zhuǎn)換與性能陷阱

SQL Server中COALESCE函數(shù)詳解:空值處理、類型轉(zhuǎn)換與性能陷阱 這一章聊 SQL Server 里的 COALESCE。先交代個(gè)背景我身邊不少寫 T-SQL 的同學(xué)工作了兩三年遇到空值第一反應(yīng)都是 ISNULL。我也一樣。直到有一次做報(bào)表清洗一張客戶表里同時(shí)有郵箱、手機(jī)、微信三個(gè)字段業(yè)務(wù)要求按優(yōu)先級取第一個(gè)能用的聯(lián)系方式用 ISNULL 套了三層語句變得又長又難讀。從那次我才真正意識(shí)到 COALESCE 的價(jià)值。COALESCE 是一個(gè)標(biāo)準(zhǔn)函數(shù)用來從一系列表達(dá)式里返回第一個(gè)非 NULL 的值參數(shù)可以是兩個(gè)、三個(gè)甚至更多。它解決的核心問題其實(shí)很簡單NULL 在 SQL Server 里既不是 0也不是空字符串更不是“沒有值”那么簡單它在 WHERE、CASE、拼接、聚合里有一整套讓人頭疼的行為。這篇筆記適合剛接觸 T-SQL 的讀者也適合那些已經(jīng)會(huì)寫 ISNULL 但還沒認(rèn)真整理過 COALESCE 的人。我會(huì)把語法、類型規(guī)則、和 ISNULL 的差別、執(zhí)行計(jì)劃里的坑、實(shí)際業(yè)務(wù)用法都過一遍最后還有幾個(gè)條件寫法上非常容易翻車的地方。1. 為什么NULL值處理值得用一整章來講有件事得先說明白數(shù)據(jù)庫里的 NULL 不是“零”也不是“空字符串”。用生活化的說法NULL 更像是問卷上的“未填寫”——你不知道這個(gè)人到底多大所以不能說他是 0 歲也不能說他不是 0 歲。SQL Server 在判斷一個(gè) NULL 參與的比較時(shí)會(huì)返回第三個(gè)邏輯值 UNKNOWN而不是 TRUE 或 FALSE。這個(gè)設(shè)計(jì)看起來繞但它是有原因的NULL 表示“未知”未知和未知之間不能說相等。所以NULL NULL的結(jié)果不是 TRUE而是 UNKNOWN。SELECT CASE WHEN NULL NULL THEN 相等 ELSE 不相等 END AS 結(jié)果; -- 結(jié)果不相等在 WHERE 里這個(gè)行為就更直接。比如一張用戶表里有 age 字段有人沒填年齡IF OBJECT_ID(tempdb..#t) IS NOT NULL DROP TABLE #t; CREATE TABLE #t (id INT, age INT); INSERT INTO #t VALUES (1, 18), (2, NULL), (3, 20); SELECT id FROM #t WHERE age 18; -- 返回1 和 3id2 不會(huì)出現(xiàn)id2 的行既沒有滿足“等于 18”也沒有滿足“不等于 18”它連被比較的資格都沒有。這種三值邏輯是 SQL 世界和普通編程語言最大的不同之一也是后來 COALESCE、ISNULL 這類函數(shù)存在的根本原因。1.1 業(yè)務(wù)里最常遇到的三種 NULL 現(xiàn)場第一種是缺失字段直接暴露給前端??蛻舯砝锫?lián)系電話為空頁面顯示空白業(yè)務(wù)人員根本不知道這個(gè)人到底沒留電話還是數(shù)據(jù)沒導(dǎo)入。第二種是聚合計(jì)算的連鎖反應(yīng)。SUM(金額)遇到一組全為 NULL 的數(shù)據(jù)時(shí)返回 NULL而不是 0。這個(gè) NULL 一旦被傳到接口、被寫進(jìn) Excel或者參與二次運(yùn)算問題就炸了。第三種是字符串拼接時(shí)被 NULL “傳染”。很多人以為 SQL Server 2012 之后有了 CONCAT 函數(shù)就萬事大吉但地址: NULL這種老寫法依然返回 NULL而 CONCAT 是會(huì)自動(dòng)忽略 NULL 的。兩套行為混在一起報(bào)表里經(jīng)常出現(xiàn)地址少一大截還不報(bào)錯(cuò)的詭異情況。1.2 沒有COALESCE時(shí)大家是怎么繞的在 COALESCE 出現(xiàn)之前或者說大家沒意識(shí)到它之前處理“取第一個(gè)非空字段”只有兩條路。第一條路是 CASE WHEN 逐級判斷SELECT CASE WHEN 郵箱 IS NOT NULL THEN 郵箱 WHEN 手機(jī) IS NOT NULL THEN 手機(jī) ELSE 未留聯(lián)系方式 END AS 聯(lián)系方式 FROM 客戶表;這段代碼邏輯一點(diǎn)問題沒有就是丑。三個(gè)字段還好五個(gè)字段的時(shí)候整段 SQL 全是 CASE 的味道。第二條路是 ISNULL 嵌套SELECT ISNULL(郵箱, ISNULL(手機(jī), 未留聯(lián)系方式)) AS 聯(lián)系方式 FROM 客戶表;兩個(gè)參數(shù)還好三個(gè)以上就變成了括號套括號寫的時(shí)候少打一個(gè)右括號運(yùn)行時(shí)才報(bào)錯(cuò)特別折騰。COALESCE 的出現(xiàn)把這個(gè)問題簡化成一行平鋪的參數(shù)列表這也是它最直觀的價(jià)值。但如果你只把它當(dāng)成“更好看的 ISNULL”那后面幾章里的坑你大概率還會(huì)踩一遍。2. COALESCE的語法模型與隱藏的數(shù)據(jù)類型規(guī)則2.1 語法和它背后的CASE等價(jià)式COALESCE 的官方語法是COALESCE ( expression [ ,...n ] )行為描述也很簡單返回參數(shù)列表中第一個(gè)非 NULL 表達(dá)式的值如果所有參數(shù)都是 NULL則返回 NULL。但這里有個(gè)更值得注意的點(diǎn)SQL Server 官方文檔明確說過COALESCE 是 CASE 表達(dá)式的語法簡寫。也就是說COALESCE(a, b, c)在邏輯上等價(jià)于CASE WHEN a IS NOT NULL THEN a WHEN b IS NOT NULL THEN b ELSE c END我建議每一個(gè)使用 COALESCE 的人都在心里存一份這張“翻譯表”。因?yàn)楹竺嫠嘘P(guān)于數(shù)據(jù)類型、求值順序、返回規(guī)則的行為都以這張表為基準(zhǔn)。你以為你在用函數(shù)實(shí)際上你在用 CASE。2.2 數(shù)據(jù)類型優(yōu)先級誰在決定返回類型很多人對 COALESCE 的第一個(gè)誤解是“返回類型當(dāng)然由第一個(gè)參數(shù)決定?!辈粚?。COALESCE 的返回類型由所有參數(shù)中數(shù)據(jù)類型優(yōu)先級最高的那個(gè)決定而不是第一個(gè)參數(shù)。SQL Server 有一套數(shù)據(jù)類型優(yōu)先級規(guī)則從高到低大致是sql_variant、xml、datetime 系列、float、decimal、int 系列、nvarchar/nchar、varchar/char 等。簡單記住兩個(gè)最常見的結(jié)論int 的優(yōu)先級高于 varchar/nvarchardecimal 的優(yōu)先級高于 int。來看幾個(gè)直觀的例子表達(dá)式返回類型結(jié)果COALESCE(100, 99)int100COALESCE(abc, 1)int報(bào)錯(cuò)將 varchar 轉(zhuǎn)換為 int 失敗COALESCE(CAST(NULL AS int), 9)int9COALESCE(CAST(1 AS decimal(10,2)), 100)decimal(10,2)1.00 與其他分支對齊COALESCE(abc, 1)這個(gè)例子特別反直覺。按“第一個(gè)非 NULL”理解第一個(gè)參數(shù)是 abc非 NULL直接返回 abc 不就行了但實(shí)際上返回類型被第二個(gè)參數(shù) 1 的 int 類型拉高系統(tǒng)會(huì)先把 abc 轉(zhuǎn)換成 int轉(zhuǎn)換失敗直接報(bào)錯(cuò)。2.3 兩個(gè)真實(shí)項(xiàng)目里最常見的踩坑現(xiàn)場第一個(gè)坑是把數(shù)字類型的字段和文本兜底混在一起。我處理過一個(gè)模擬項(xiàng)目電話號碼字段在表里是 int業(yè)務(wù)上想要是沒號就顯示“未知”。開發(fā)同學(xué)寫的是SELECT COALESCE(電話, 未知) FROM 客戶表;這條 SQL 一執(zhí)行就報(bào)“將 varchar 轉(zhuǎn)換為數(shù)據(jù)類型 int 時(shí)失敗”。原因就是上一節(jié)說的int 優(yōu)先級更高未知 被轉(zhuǎn)成 int當(dāng)然失敗。正確做法是同類型對齊SELECT COALESCE(CONVERT(varchar(20), 電話), 未知) FROM 客戶表;第二個(gè)坑發(fā)生在 decimal 精度標(biāo)度混用的時(shí)候。COALESCE 的參數(shù)都是 decimal但精度標(biāo)度不一樣時(shí)SQL Server 會(huì)按照內(nèi)部規(guī)則算出新的結(jié)果類型而非簡單取第一個(gè)參數(shù)的類型。結(jié)果可能不是你預(yù)期的小數(shù)位數(shù)等匯總對不上賬的時(shí)候再回頭排查就非常痛苦。我的習(xí)慣是涉及金額、百分比這類對精度敏感的場景不要依賴系統(tǒng)推斷用 CAST 把期望的類型顯式寫死。SELECT COALESCE(CAST(price AS decimal(18,2)), 0) FROM 訂單表;這樣寫出來未必是最短代碼但一定是最不容易出事的代碼。3. 和ISNULL逐個(gè)對比該用哪個(gè)、不該用哪個(gè)SQL Server 里既然已經(jīng)有 ISNULL為什么還要 COALESCE答案很簡單因?yàn)?COALESCE 是 ANSI SQL 標(biāo)準(zhǔn)的一部分跨數(shù)據(jù)庫遷移時(shí)更友好同時(shí)它支持兩個(gè)以上的參數(shù)。但 ISNULL 也不是沒有存在價(jià)值下面從幾個(gè)維度認(rèn)真比一輪。3.1 六個(gè)核心差異對照對比維度ISNULLCOALESCE參數(shù)個(gè)數(shù)固定 2 個(gè)2 個(gè)到多個(gè)SQL 標(biāo)準(zhǔn)T-SQL 專用ANSI SQL 標(biāo)準(zhǔn)返回類型規(guī)則固定以第一個(gè)參數(shù)類型為準(zhǔn)以所有參數(shù)中優(yōu)先級最高者為準(zhǔn)與 CASE 的關(guān)系無是獨(dú)立函數(shù)是 CASE 的語法簡寫鏈?zhǔn)蕉档仔枰短?ISNULL(ISNULL(...))參數(shù)平鋪即可轉(zhuǎn)換失敗表現(xiàn)第二個(gè)參數(shù)向第一個(gè)參數(shù)類型轉(zhuǎn)換失敗時(shí)報(bào)錯(cuò)返回類型確定后任一參數(shù)轉(zhuǎn)換失敗都可能報(bào)錯(cuò)3.2 ISNULL的“前向轉(zhuǎn)換”和COALESCE的“優(yōu)先級轉(zhuǎn)換”這兩種函數(shù)最大的行為差異在于類型轉(zhuǎn)換方向。ISNULL 的規(guī)則非常死板返回類型永遠(yuǎn)是第一個(gè)參數(shù)的類型第二個(gè)參數(shù)如果想?yún)⑴c取值必須能隱式轉(zhuǎn)換成第一個(gè)參數(shù)的類型。COALESCE 的規(guī)則則是“民主集中制”所有參數(shù)先按數(shù)據(jù)類型優(yōu)先級選出老大然后所有人都向老大看齊。一個(gè)非常經(jīng)典的對比 SQL 能把這個(gè)差異照得明明白白-- ISNULL返回類型固定為第一個(gè)參數(shù)的 varchar返回 abc SELECT ISNULL(abc, CAST(NULL AS int)); -- COALESCEint 優(yōu)先級更高返回類型變成 intabc 轉(zhuǎn)換失敗報(bào)錯(cuò) SELECT COALESCE(abc, CAST(NULL AS int));第二個(gè)參數(shù)明明是 NULL但它已經(jīng)足夠影響整個(gè)表達(dá)式的返回類型了。很多人第一次看到這個(gè)報(bào)錯(cuò)都會(huì)愣一下這個(gè) CAST(NULL AS int) 根本沒被用上憑什么它來定類型這就是 COALESCE 隱藏最深的規(guī)則之一類型推斷不關(guān)心值是 NULL 還是非 NULL只看參數(shù)的數(shù)據(jù)類型聲明。3.3 鏈?zhǔn)蕉档椎目勺x性對比老代碼里經(jīng)常有這種寫法ISNULL(微信, ISNULL(郵箱, ISNULL(手機(jī), 無聯(lián)系方式)))嵌套三層勉強(qiáng)能看五層以上就是災(zāi)難。改成 COALESCE 之后COALESCE(微信, 郵箱, 手機(jī), 無聯(lián)系方式)維護(hù)時(shí)想調(diào)整優(yōu)先級直接在第幾個(gè)參數(shù)的位置上調(diào)換順序就行不用去數(shù)括號。這也是我在團(tuán)隊(duì)代碼評審里最常提的替換建議。當(dāng)然 ISNULL 也不是一無是處。它勝在語義直白、參數(shù)固定不會(huì)亂寫、少數(shù)復(fù)雜執(zhí)行計(jì)劃下優(yōu)化器的選擇更穩(wěn)定。但為了這點(diǎn)差距犧牲可讀性不值得。簡單兩個(gè)參數(shù)的場景愛用哪個(gè)用哪個(gè)多個(gè)參數(shù)鏈?zhǔn)蕉档椎膱鼍拔覠o腦選 COALESCE。4. COALESCE真的“短路”嗎一個(gè)容易翻車的執(zhí)行計(jì)劃問題4.1 “短路”這個(gè)說法到底從哪來很多博客說 COALESCE 是“短路求值”找到第一個(gè)非 NULL 之后后面的參數(shù)就不計(jì)算了。這個(gè)說法主要來源于 MySQL 等數(shù)據(jù)庫的文檔因?yàn)?MySQL 的 COALESCE 確實(shí)會(huì)跳過后續(xù)參數(shù)的求值。但 SQL Server 的情況要復(fù)雜得多。官檔只是說 COALESCE 是 CASE 的簡寫而 CASE 的邏輯語義是“只計(jì)算命中的分支”。注意這個(gè)詞邏輯語義。SQL Server 是一個(gè)基于成本的優(yōu)化器它有權(quán)在不改變最終結(jié)果的前提下重排運(yùn)算符、預(yù)計(jì)算標(biāo)量表達(dá)式、做常量折疊。優(yōu)化器認(rèn)為怎么劃算就怎么來并不保證被定義為“不計(jì)算”的表達(dá)式真的不會(huì)在物理執(zhí)行計(jì)劃里出現(xiàn)。4.2 我在數(shù)據(jù)轉(zhuǎn)換場景里遇到的“理論上不該報(bào)錯(cuò)卻報(bào)錯(cuò)”我印象最深的一次是給一張日志表做清洗。表里有兩個(gè)字段ErrorCode 是 int 可空Message 是 nvarchar里面存的是用戶填寫的文本。需求是優(yōu)先展示 ErrorCode如果沒有就嘗試從 Message 里解析數(shù)字。一開始團(tuán)隊(duì)同學(xué)寫的 SQL 是這個(gè)樣子的SELECT COALESCE(ErrorCode, CONVERT(int, Message)) FROM 日志表;他當(dāng)時(shí)的想法很直接ErrorCode 有值的時(shí)候CONVERT(int, Message) 根本不會(huì)被計(jì)算不會(huì)出錯(cuò)。結(jié)果這條 SQL 在跑大分區(qū)的時(shí)候報(bào)了轉(zhuǎn)換錯(cuò)誤報(bào)錯(cuò)信息指向 Message 里的非數(shù)字文本“N/A”。問題在于執(zhí)行計(jì)劃選擇了先對 Message 做轉(zhuǎn)換運(yùn)算把“不該走”的分支提前算了一遍。這種現(xiàn)象不是每次必現(xiàn)和表的數(shù)據(jù)分布、執(zhí)行計(jì)劃形狀有關(guān)但一旦碰上一次整個(gè)任務(wù)就掛掉。從那以后我給自己定了一條鐵律不要把重要的業(yè)務(wù)邏輯托付給 COALESCE 的隱式短路。特別是第二個(gè)參數(shù)里帶 CONVERT、除法、子查詢這類“有副作用”的表達(dá)式時(shí)默認(rèn)它會(huì)算而不是默認(rèn)它不會(huì)算。4.3 不要依賴隱式短路把邊界條件寫明白同樣一個(gè)需求穩(wěn)固的寫法是給轉(zhuǎn)換加一層保護(hù)SELECT COALESCE(ErrorCode, TRY_CONVERT(int, Message)) FROM 日志表;TRY_CONVERT 在轉(zhuǎn)換失敗時(shí)返回 NULL而不是拋錯(cuò)。這樣即使優(yōu)化器提前計(jì)算了后面的參數(shù)最多得到 NULL絕不會(huì)讓整條 SQL 崩掉。更嚴(yán)格一點(diǎn)的寫法是先用 CASE 顯式把邊界條件寫出來比如只有 Message 看起來像純數(shù)字時(shí)才嘗試轉(zhuǎn)換。代碼長了點(diǎn)但執(zhí)行計(jì)劃和業(yè)務(wù)邏輯都在你的掌控之內(nèi)。寫到最后你會(huì)發(fā)現(xiàn)COALESCE 本身是安全的不安全的是“你以為它一定會(huì)短路”這個(gè)假設(shè)。兜底默認(rèn)值這種無害表達(dá)式隨便用涉及轉(zhuǎn)換和計(jì)算的表達(dá)式請自覺套上安全殼。5. 六個(gè)能直接抄進(jìn)業(yè)務(wù)代碼的COALESCE用法5.1 報(bào)表輸出層把“空值”換成“用戶看得懂的話”報(bào)表查詢是 COALESCE 最經(jīng)典的主場。聯(lián)系方式、地址、備注這些列經(jīng)常存在部分記錄缺失的情況。與其把 NULL 拋給前端不如在 SQL 層直接換成展示文案SELECT 客戶ID, COALESCE(收貨人電話, 備用電話, 未填寫) AS 聯(lián)系電話 FROM 客戶資料;這樣前端不用反復(fù)判斷 NULL減少一層聯(lián)調(diào)成本。注意這里的電話字段如果存的是數(shù)字類型就得先 CONVERT 成字符串再走 COALESCE否則又會(huì)撞上類型轉(zhuǎn)換報(bào)錯(cuò)。5.2 多列合并取首個(gè)非空郵箱、手機(jī)、微信號業(yè)務(wù)里經(jīng)常有一組“同義字段”比如聯(lián)系方式有微信、郵箱、手機(jī)三個(gè)入口行數(shù)據(jù)不一定哪個(gè)字段有值展示時(shí)要按業(yè)務(wù)優(yōu)先級選一個(gè)。SELECT 客戶ID, COALESCE(微信ID, 郵箱, 手機(jī)) AS 首選聯(lián)系方式 FROM 客戶表;這個(gè)場景用 CASE 寫非常啰嗦用 ISNULL 嵌套也很痛苦COALESCE 一行就表達(dá)了“優(yōu)先級順序即參數(shù)順序”這個(gè)語義。調(diào)整優(yōu)先級時(shí)直接調(diào)參數(shù)位置比改一堆 CASE WHEN 快得多。5.3 聚合結(jié)果特殊值LEFT JOIN之后SUM出來的NULL聚合函數(shù)里SUM、AVG、MAX 對 NULL 的行為和直覺不太一樣組內(nèi)如果沒有任何非 NULL 值SUM 返回的是 NULL不是 0。最常見的觸發(fā)場景是 LEFT JOINSELECT c.CustomerID, COALESCE(SUM(o.Amount), 0) AS TotalAmount FROM Customers c LEFT JOIN Orders o ON o.CustomerID c.CustomerID GROUP BY c.CustomerID;沒有下過單的客戶在 JOIN 之后對應(yīng)的 o.Amount 是 NULLSUM 之后還是 NULL。不包 COALESCE 的話這條查詢的接口返回值就是 NULL前端經(jīng)常渲染成空白。還有個(gè)很容易忽略的點(diǎn)如果查詢里再寫一個(gè)WHERE o.OrderDate 2024-01-01LEFT JOIN 的語義會(huì)退化沒訂單的客戶會(huì)被過濾掉這時(shí)候 COALESCE 也救不回來。這個(gè)坑和 COALESCE 無關(guān)但要留個(gè)心眼。5.4 行轉(zhuǎn)列字符串拼接FOR XML PATH里的NULL斷鏈老版本的 SQL Server 做逗號分隔拼接最常用的招數(shù)就是 FOR XML PATH。這里面藏著一個(gè)靜默丟數(shù)據(jù)的問題一旦被拼接的列里有 NULL, NULL的結(jié)果是 NULL這一行在 FOR XML PATH 拼接結(jié)果中會(huì)直接消失而且不報(bào)錯(cuò)。SELECT o.OrderID, STUFF(( SELECT , COALESCE(d.ProductName, 未命名) FROM OrderDetails d WHERE d.OrderID o.OrderID FOR XML PATH() ), 1, 1, ) AS ProductList FROM Orders o;這里給 ProductName 套上 COALESCE 是必須的不然產(chǎn)品清單會(huì)莫名少幾項(xiàng)。如果團(tuán)隊(duì)用的是 SQL Server 2017 以上版本STRING_AGG 會(huì)自動(dòng)忽略 NULL寫法上可以簡化但只要全部值是 NULLSTRING_AGG 仍然返回 NULL外面要不要再套 COALESCE取決于你對空字符串和 NULL 的取舍。5.5 分組內(nèi)回填最近的非空值CROSS APPLY組合拳做快照表、狀態(tài)變更表時(shí)經(jīng)常要“向上找最近一次有值的記錄”。比如每個(gè)客戶每天有一條快照聯(lián)系方式哪天忘了更新就寫成 NULL現(xiàn)在要補(bǔ)全成最近一次非空值。SELECT s.CustomerID, s.SnapshotDate, COALESCE(p.Contact, 從未留過) AS Contact FROM Snapshot s OUTER APPLY ( SELECT TOP 1 s2.Contact FROM Snapshot s2 WHERE s2.CustomerID s.CustomerID AND s2.SnapshotDate s.SnapshotDate AND s2.Contact IS NOT NULL ORDER BY s2.SnapshotDate DESC ) p;這里的邏輯核心是 OUTER APPLY 加 TOP 1 按時(shí)間倒序取最近的非空值COALESCE 只負(fù)責(zé)最后兜底如果整個(gè)歷史里都沒有聯(lián)系方式就給個(gè)“從未留過”的文案。這個(gè)模式比自連接清晰也比窗口函數(shù)在老版本上的支持情況更穩(wěn)定。5.6 計(jì)算列加索引讓COALESCE的結(jié)果“物理化”如果“取第一個(gè)非空字段”的結(jié)果經(jīng)常用來做篩選、排序、JOIN而且表數(shù)據(jù)量很大那每次查詢都臨時(shí)算 COALESCE 是有成本的。更優(yōu)的做法是把它變成計(jì)算列再在計(jì)算列上建索引。ALTER TABLE dbo.客戶 ADD 首選聯(lián)系方式 AS COALESCE(手機(jī), 郵箱, ) PERSISTED; CREATE INDEX IX_客戶_首選聯(lián)系方式 ON dbo.客戶(首選聯(lián)系方式);計(jì)算列在數(shù)據(jù)寫入時(shí)就計(jì)算好了結(jié)果并落盤查詢時(shí)把它當(dāng)普通列用就行。COALESCE 是確定性表達(dá)式滿足計(jì)算列的要求。這個(gè)思路本質(zhì)上是用存儲(chǔ)空間換查詢時(shí)間在“以聯(lián)系方式反查客戶”這類高頻場景里收益非常大。6. 條件里的COALESCE語義陷阱和索引失效6.1 WHERE里的COALESCE為什么容易廢掉索引很多人寫“排除空字符串”的時(shí)候順手就寫了SELECT * FROM 客戶表 WHERE COALESCE(姓名, ) ;這條 SQL 能跑但它把姓名列包進(jìn)了函數(shù)里。對優(yōu)化器來說這是一個(gè)帶函數(shù)調(diào)用的非 SARG 謂詞很難直接在索引上做定位多數(shù)情況下會(huì)退化成掃描。數(shù)據(jù)量小時(shí)感受不到上了百萬行之后差距就很明顯。等價(jià)改寫是把它拆成正常的空值判斷SELECT * FROM 客戶表 WHERE 姓名 IS NOT NULL AND 姓名 ;兩條 SQL 語義一致但后面的寫法給了優(yōu)化器更多發(fā)揮空間。這也算是一個(gè)通用原則能用普通謂詞表達(dá)的就不要包一層函數(shù)。6.2 COALESCE(a, b) v 不等于“a或b等于v”這是一個(gè)比性能更要命的語義坑。有張訂單表里面有“對接人”和“負(fù)責(zé)人”兩個(gè)字段。業(yè)務(wù)員想查“張三參與的訂單”有人寫出了這樣的 SQLSELECT * FROM 訂單 WHERE COALESCE(對接人, 負(fù)責(zé)人) 張三;表面看意思是“對接人是張三或者負(fù)責(zé)人是張三都算”。但實(shí)際執(zhí)行邏輯是另一回事。翻譯回 CASE 你就會(huì)明白SELECT * FROM 訂單 WHERE (對接人 IS NOT NULL AND 對接人 張三) OR (對接人 IS NULL AND 負(fù)責(zé)人 張三);也就是說只要對接人這一欄有值即使它是“李四”系統(tǒng)也不會(huì)再去看負(fù)責(zé)人是不是張三。負(fù)責(zé)人是張三也沒用因?yàn)閷尤朔强找呀?jīng)把路堵死了。我在一個(gè)模擬項(xiàng)目里幫人排查過類似的 bug業(yè)務(wù)方反饋“張三的訂單查不全”最后發(fā)現(xiàn)就是這條 COALESCE 寫法導(dǎo)致的。開發(fā)者的本意是“任一匹配”寫出來的卻是“優(yōu)先順位匹配”。6.3 區(qū)分兩種需求寫出正確版本如果需求真的是“只要對接人或負(fù)責(zé)人任一等于張三”應(yīng)該寫成SELECT * FROM 訂單 WHERE 對接人 張三 OR 負(fù)責(zé)人 張三;如果需求是“優(yōu)先取對接人對接人沒填時(shí)才看負(fù)責(zé)人”那也得把邏輯拆開寫SELECT * FROM 訂單 WHERE 對接人 張三 OR (對接人 IS NULL AND 負(fù)責(zé)人 張三);這兩種寫法的共同點(diǎn)是都沒有在待篩選列上包 COALESCE 函數(shù)索引可用的可能性更高語義也一目了然。寫 SQL 的時(shí)候COALESCE 用在 SELECT 列表里做展示兜底大多沒毛病可一旦出現(xiàn)在 WHERE 條件里就要多問自己一句你想要的到底是“任一匹配”還是“順位匹配”我處理遺留系統(tǒng)時(shí)發(fā)現(xiàn)很多老代碼的 COALESCE 寫錯(cuò)了語義業(yè)務(wù)方說“找張三”實(shí)際跑出來少一截這個(gè)坑比它帶來的性能問題更麻煩。所以現(xiàn)在我會(huì)建議組里的同學(xué)記住 COALESCE 的“行為模型是 CASE”——你在 WHERE 里寫的每一處 COALESCE都值得翻譯回 CASE 讀一遍再上線。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久风骚城市人| 91色黑人少妇| 亚洲欧洲无码97久久精品| 久久在肏| 日本熟妇一区二区三区| 亚洲人妻日日日| 国产精品自在线发布| 天天综合欧美综合| 人妻二区| 色哟哟-国产专区| 婷婷av在线中文字幕| 亚州少妇| 国产精品精品系列在线观看| 欧美在线大香蕉| 久久性爱视频免费看| 青草青青久久久久久国产| 99rre在线精品99re8| 91精品黄在线观看| 女人综合网| 欧美日韩色图片| 超碰色综合| 人妻少妇久久久| 四虎精品一区二区| 丁香五月天久久精品视频一区二区三区| 国产精品扒开腿做爽爽爽视频| 大香网伊人久久综合| 91M一社| 精品国产片亚洲一区| 四虎av在线| 69超碰综合| 老熟女91视频| 好看的91视频| 丁香五月婷婷啪啪| 熟女乱3伦999| 色香伊人| 97手机日韩| 天天亚洲综合| 精品人妻1区| 黄色欧美性爱视频| 婷婷丁香在线| 精品无码久久久久久久杏吧| 中文字幕在线观看AV| 沈阳熟女高潮对白视频| 欧美色图 人妻| www.91理论| 超碰视97中文| 欧美亚洲玖玖玖| 国产亚洲深夜激情| 亚洲天堂久| 中文字幕在线观看丝袜| 欧美日韩国内不卡| 午夜国产综合视频在线观看| 美女AV一区二区| 欧美日韩性爱无码| 91精品老女人| 狠狠干妹子| 偷拍 精品另类 凸凹了四区| 欧美少妇内射| 久久91精品国产9丨久久分亭| 超碰精品人妻狠狠干| 狠狠色婷婷| 国内精品a| 亚洲久久久| 伊人玖玖网| 五月大香蕉| 东北少妇高潮zzzz| 欧美日韩不卡传媒| 欧美国产操逼| 国产三区免费在线观看| 日韩免费福利在线观看| 亚洲欧美情色| 操老熟女AV| 久操视频资源站公开| 激情六月婷婷| 日韩不卡a级视频专区| 日本一区二区三区四区五区六区七区八区九区| 久久深夜无码| 欧日韩不卡视.频| 久久毛卡| 青椒国产97在线熟女| 91青青在线| 久久久国产精品亚洲精品| 久悠悠av| 天天日天天插| 综合色99| 日韩操逼性鲍| 五月婷婷激情综合| 国产日韩欧美中文在线播放| 免费观看一区| 尤物网站91| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| AV老汉| 综合欧美日本三级| 韩国黄色片精品久久久| 任你艹| 性一交一乱一交A片久久四色| 亚洲h片在线免费观看| 国产深喉视频一区二区| 精品黄色电影| 超碰97久久| 欧美韩日精品99综合| 超碰无码五月97| 日韩欧美被操黄免费观看| 婷婷三区| av在线浏览| 久久这里精品国产99丫e6| 91视频国品一二三区| 我爱大香蕉| 99色| 色妺妺在线视频| 日韩丨制服丨中文|在线| 精品亚洲国产成人AV制服丝袜| 久久久久久91香蕉国产| 日韩97超碰中文字幕| 国产又大又硬又长又粗| 黄aaaaaaaaaaaaaaaaaa色网站| 日本性爱欧美性爱| 18禁网站在线播放| 狠狠色一区二区中文字幕| 午夜精品99久久久久传媒| 久久综合18p| 亚洲色欲一区二区三区| 久久草视频污视频| 丰满人妻一区二区中文| 综合五月天| 国产激情片在线观看| 国模精品一区二区三区苹果色戒| 69人妻精品一区二区绯色| 91啪啪视频| 国产传媒操逼视频| 搡老人老9丨女老熟人| 人妻熟女字幕一区二区| 亚洲人妻五月丁香婷婷| 婷婷五月天激情小说| 欧美性天天影院| 欧美999| 精品射1999| 欧美日本不卡| 亚洲综合色图欧美| 人妻熟女一区二区| 91高跟美女在线播放| 九九九九九精品视频| 99爱久久视频频| 超碰97久久| 丝袜天堂| 九九热在线视频| 国产在线观看一区二区三区| 国产成人无码a| 97欧美色资源| 欧美精品在线观看| 1024人妻| 夜夜操二区| 91天天| 狠狠 91| 后入国产| 亚洲骚男同com| 99色综合| 日韩性爱播放| 亚洲欧美日韩激情不卡| 最新国产精品| 亚洲无码国产精品久久| 九一综合精品视品av| 久久中文字幕在线观看| 久久久久久久久久8888| 999久久久久久久久| 日本123区操B视频| 欧美日韩色图片| 黑人精品欧美一区二区蜜桃| 亚州操逼图| 熟女91网| 久久九九网| 1区2区3区视频| 麻豆AV一区二区| 国产女人高潮嗷嗷嗷叫小说| 蜜臀亚洲综合一二三四区| 亚洲精品aa久久伊人| 久久久9 9 9精品| 婷婷五月天伊人| 中文操逼字幕| 91激情综合| 五月婷婷色| ,成人免费啪啪视频| 欧洲大香蕉| 天美传媒av 在线| 亚洲欧美色图小说| 午夜经典| 精品小视频在线| 国产福利精品最新在线| 成人国产视频在线观看| 任我爽在线视频免费观看| 日韩免费一级性爱视频| 青青草天天亲夜夜操网| 婷婷激情丁香| 偷窥自拍亚洲色图| 久久99人妖视频国产| 91精品久久久久久77777| 日韩久射综合| 欧美色五月| 91国内外在线| 大香蕉草草| 极品丝袜无码| 国产高清不卡视频| 日韩人成网站在线播放| 国产丝袜一区二区三区| 欧美综合网| 北条麻妃99精品青青久久| 美女91在线观看| 久99在线免费观看视频| 国岛片视频| 欧美熟妇视频| 色色色欧美| 999国产精品999| 久久久久9久久久久| 国产精选视频| 男人久久天堂| 五月婷网站| 91综合站| 伊人五月天激情| 亚洲综合春色| 综合九九| av天堂天堂av日韩| 亚洲精品骚逼| 激情五月综合开心五月| 久草精品热视| 色九九九综合| 亚春色色| 操高情无码| 亚洲一曲日韩精品| 欧美日韩97在线| 久久久9 9 9精品| 国产白领连续中出在线观看| 无码91| 日韩欧美aⅴ综合网站发布| 黄片qw| 欧美老妇曰批的视频| 国产日韩在线播放| 婷婷丁香六月| 日本一区二区电影网站| 日本不卡二三区| 久久精品一区二区三区蜜桃臀| 麻豆a'v电影| 99re超碰| 国语av最新自产拍在线观看| 日韩三级一区| 女生自91网站| 欧美做爰无码A片视频| 东京热激情视频一二三区| 欧美国产成人在线| 四虎影视国产精品| 在线岛| 日韩人妻资源在线看| 97精品综合久久网| 久久精品久| 国产真实野战在线视频| caorenqi shipin| 国产欧洲精品亚洲午夜拍精品| 亚州性色| 日韩婷婷| 久久中文字幕女同性恋一区| 中文字幕久久婷婷丁香五月天| 亚洲国产欧美中日韩成人综合视频| 狠操91,com| 激情五月天色色网| 久久精品人体| 欧美色日| 中文字幕日韩精品久久| 在线观看日韩av不卡| 亚洲人在线| 99热思思| 国产精品久久久久久夜夜夜| 日欧毛片久久| 超碰在线日韩一区| 亚洲无码?第一页| 性暴力欧美猛交在线直播| 婷婷综合在线| 91操人| 久久久久久97| 91大香蕉伊人| 精品99999久久久久久| 婷婷美人网| 久久a久久| 色久桃花影院在线观看| 亚州日韩97| 久久久久国产亚洲一区欧美色图日韩| 人妻少妇色综合| 色婷婷丁香五月| 日韩高清黄片| 国产对白刺激视频| 91九九九小逼| 很黄很污的免费网站| juliaann丝袜| 欧美亚洲中文字幕| 久久蜜桃一区二区| 啊…啊…操我用力操我| 97超碰磁| 97bbn| 5月婷婷6月六月丁香| 亚洲高清色综合| 久久欧洲| av资源在线观看少妇| 蜜桃久久一区二区| 做爱福利视频一区二区| 干婷婷综合网| 国产精品嫩草影院午夜两性| 韩国国产欧美情侣视频在线| 99色婷婷| 午夜影美女日鸡鸡天天视频国产| 国产激情在线| 日本黄页视频在线观看| 久久理论字幕视频| 免费综合亚洲中文| 95自拍视频在线观看| 青青久久艹| 久久久久久九九九九九九| 久久综合乱子伦国产免费| 超碰成人国产| 午夜亚洲国产理论秋霞| 亚洲学生妹高清av| 日本女人久久久| 毛片麻豆91糖心精品毛情片| 欧美综合第一| 日韩性色b| www.丁香五月| 色婷婷av在线观看| 自慰白浆在线观看| 78精品| 中文字幕精品亚洲熟女| 淮穴色AV| 综合影视国产无码| 久久永久无码人妻视频| 天天在线91| 91制服丝袜中文字幕| 330dv亚洲成年视频网| 91最新综合| 内射卯月麻衣| 精品999一区二区| 亚洲一区二区 麻豆传媒| 久久久久久AⅤ无码免费肉站| 久久无码一区二区二三区性色| 欧美日韩亚洲天堂| 综合色图区| 91天堂丝袜美腿| 99999re| av资源在线播放天堂| 综合大香蕉美。| 精品人妻一二三| 色婷婷五月天| 伊人操| 五月婷婷六月激情| 男人天堂毛片| 亚洲 无码 偷拍| 亚洲成人av电影在线| 国产三级日产三级韩国三级| 99久久婷婷国产综合精品草原| 天天干一区二区| 欧美综合自拍亚洲综合图| 97手机日韩| 一区二区影院| 欧日韩不卡视.频| 黑人精品久久97| 资源新线在线天堂| 丁香成人五月天| 一区| 国产强奸乱伦无码视频| 久久久国产三级黄色片| 天堂综合| 亚洲色图欧美色图日韩色图| 欧美日韩夜夜| 99999国产| 日日日日做夜夜夜夜无码| 色老汉玖玖爱| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 一区二区三区国产精产| 色九九久九九| 手机看片1024你懂的国产| 精品久久久久黄少妇| 精品久久97| 免费操逼视频下载| 91超碰碰在线| 搞中出久久| 另类亚洲图色| 热99这里有精品综合久久 | 新精精品久久精品| 嫩草美女久久| 一区二区首页| 日韩在线地址一| 小草精彩毛片| 东北女人无套内谢视频| 五月丁香成人网| 色网亚洲人| 无码人妻丰满热妇又大又粗| 男人天堂网手机版婷婷| 久久高清欧美国产| 久热精品在线| 丁香婷婷色五月| 快播电影网日韩新片| 播播亚洲小说亚洲| 伊人嫩草| 一二三四免费视频| 久久久九九九| 亚洲瓯美色图| 青娱乐亚洲自拍| 亚洲综合骚逼| 激情接吻视频久久久久久| 久男人久久| 在线人人人人人人精品超| 一区超碰一区| 久久草草欧美精品| 天天夜躁日日躁狠狠2002| 啊啊啊97视频| 美女极品一区二区三区| 中文子幕一二三| 不卡啪啪视频| 天天综合网网欲色| 97超级欧美| 久久亚洲AV无码专区国产精品 | 人妻熟女av国产网站| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 国产精品无码论坛| 久久久无码精品人妻二区 | 欧美乱伦专区| 亚洲大胆人体av| 强奸乱伦中文字幕AV| 女人18精品一区二区三区| 六十路日本| 日本一道在线播放高清| 一本色道久久综合熟妇| 五月丁香色综合| 亚洲**2021在线观看| 97在线青| 一区二区激情国产熟女 | 亚欧美综合| 日韩三级一区| 欧美日韩免费性爱| 久久99九九九九6666免费观看软件| 亚洲欲色9532548967一区| 成人七区| 啊啊啊啊啊在线| 欧美韩国你懂得在线 | 久操97| 天美传媒av在线| 天天日天天色| 在线观看免费视频国产| 精品人妻一区二区三区免费视频| 久久久久密臀一区二区| 婷婷爱五月| 青青久久手机线视频| 亚洲美女精品九九视频| 久久大精品乱码视频人妻熟女| 久久久婷| 久草免费在线一区二区| 白丝被操91| 亚洲欧美伦综合| 91色色综合| 91色碰| 日韩性爱高清免费视频| 无码精品久久久天天影视| 夜夜爽夜夜高潮夜夜爽| chaopen97久久| 磁力99AV| 91人妻丝袜无码| 高清国产av无码| 先锋激情∨在线视频播放| 欧美色乱| 国产激情在线| 蜜臀久久99精品久久久久电影| 亚洲限制级| 欧亚乱色熟一区二区三四区| 思思热在线视频精品| 男人高清无码一区二区| 国产精品白丝在线播放| 亚洲av性爱电影| 中文字幕熟女人妻丝袜| 激情综合 婷婷五月 红杏| 欧美高潮| 亚洲综合 欧美| 9久久美女首页| www老逼91| 屌色在线97视频| 99re在线观看| 中文激情网| 黄网色一区二区三区四区精品| 欧美色视频在线| 国产乱伦亚洲| blacked精品一区国产| 人人看人人插| 成年人三级黄色片视频| 无码最新| 首页中文字幕中文字幕免费| 九九探花视频在线观看| 色爱三区| 久久草大香蕉| 日本免费中文一区二区三区四区| 天天舔天天 | 中文字幕精品一区二区精| 国产在线强奸视频| 上海一级黄片| 黄片直播三级黄片两女一男| 大香蕉免费乱伦视频| 日本亚洲熟女视频| 操人妻少妇中文 | 韩国成人精品久久久免费看| 少妇干B| 国产九九九九九九九九| 婷婷色色五月天| 日夜啪电影| 91天天日| 久久久久久久久久精| 日本黄色天堂| 久久久久成人网| 亚洲男人天堂av| 欧美日韩午夜精品一区二区三区| 日韩黄片视频试看| 操比国产| 欧美毛片在线网| 日韩中文字幕熟妇人妻| 91精品少妇搡搡搡| 欧美 亚洲 在线| 97无码视频在线播放| 亚洲国产尤物yw在线观看| 色综合久| 久久久久久久久久久久久9999| 欧美亚洲影视| 91超碰在线观看| 操逼操逼操| 岛国AB视频| 日日狠狠久久偷偷色综合免费| 少妇同性| 97欧美资源| 久9re热视频这里只有精品| 美女极品一区二区三区| 丰满人妻一区二区三区免费,| 玖玖综合色| 欧美一区二区三熟女剧情| 天天草天天日| 亚洲综合精品国产一区| 天天淫人人妻日日色| 嗯嗯啊啊啊啊轻点视频| 91欧美大片| 日本丝袜人妻内射| 日韩亚洲美女一区久久| 亚洲自拍青操视频| 亚洲人妻中文在线视频| 亚洲精品男人的天堂| 怡红院成人av| 大香蕉一级黄色片久久| 极品色www影院| 麻豆区99999| 久草综合网| 神马久久久久久伦理片| 久悠悠av| 国语精品av| 日本性爰一道本| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 日韩啊V| 97干在线| 亚洲一区制服诱惑| 免费啪啪av| 婷婷亚洲中文字幕在线| 欧美性性性| 丁香五月综合| 日韩无码AB| 欧美亚洲国产91在线| 五月丁香网站| 97精品人妻一二三四| 欧美一区二区三区四区综合| 黄色成品网站| 国产色产精品在线观看| 99re视频在线观看这里只有精品| 肉丝中文无码高清| 色情乱伦AV| 一区二区三区无卡视频在线观看| 欧美激情综合| 1956日韩精品| 97欧美视频| 欧美激情综合色综合啪啪五月| 欧美色道啊| 91社区拍啪人妻| 中文字幕超碰CAO| 亚洲好看强奸乱伦| 色 亚洲 91| 人人操人人舒服| 9999伦理视频| 秋霞网无码| 色女综合| 亚洲 欧美 制服 另类 自拍| 欧美久久久15P| 极品欧美一区二区三区| 国产黄色动态精品| 日本三级A片网站com| aaa淫乱视频| 国产一区二区在线播放量| 97se综合网| 免费少妇一区二区| 色欲色香天天天综合网www-亚洲综合国| AV乱伦专区| 国产精品视频| 婷婷中文网| 亚洲激情在线| 99自拍B亚洲 | 黄色成年| 999在线电影香蕉| 蜜臀99久久精品久久久懂爱| 欧美se亚洲| 久草视频观看视频在线| 啊啊啊在线看| 色色99| 日产操逼| 黄色片G G G| 桃花色涩综合影院| 精品午夜福利| 日韩视频小说在线观看| 黄aaaaaaaaaaaaaaaaaa色网站| 999色欧美中文字幕| 天天综合色电影| 天天躁日日躁AAAAXXXX国产| 久久久久久裸体| 91丨九色丨国产打屁股| 91美女在线| 爱爱动态试试看6 0秒| 精品人体无圣光凹凸| 精品国产乱码久久久久久免费| 中文字幕老熟妇黄色视频| 秋霞网无码| 少妇精品久久久八区九区| 天综合网| 太久视频| 久久大黄片| 婷婷精品国产欧美精品亚洲人人爽| 成人看片网站| 日韩免费在线视频观看| 伊人超碰97| 九九九九九九九九九五码| 精品久久人妻成人网| AVE乱伦| 9九九国产| 偷窥自拍亚洲色图| 免費黃色視頻觀看一| 国产精品免费久久久久久久久久 | 久久综合99| 第四色奇米影视777| 久久久日本电影| 色九九综合AV| 自拍丝袜美腿人妻| 综合婷婷| 天天天天天天天天天天干美女| 99久久久无码国产精品性啊聊| 久操av在线| 欧美色66| 97超碰国产精品| 男男H黄动漫啪啪无遮挡网站| 精品人妻一区二区三区四区石在线| 久久熟女嫩草成人片免费| 亚洲综合影片| 欧美日韩夜夜| 五月天开心网| 成视频在线观看免费看| 天天操天天射天天日| 欧美色图片| 91宗合网| 九九九九九九综合| 丝袜色综合| 操逼999| 欧美无圣光在线| 天天日老熟妇| 丁香六月婷婷久久综合| 久久精品三级影视| 亚欧无码在线| 国产成人综合在线播放| 牛牛操视频逼| 国产自制av蜜乳| 精品午夜福利| 亚洲国产综合图区中文字幕| 91高清欧美| 青草伊人网| 欧美成人精品一区二区男人蜜臀| 欧美在线视频播放| 欧美大战久久久伊人| 天天综合香 ld视频| 白丝1区2区3区| 99久久com免费视频′| 玖色AV| 1024久久高清视频| 五月天黄色av| 综精品久久久aaaa| 亚洲欧美综合色| 欧美 青青草| 99综合自拍| 97 视频在线| 伊人一区二区三区| 999九九精品| www. 男人天堂成人在线| 亚洲熟妇综合久久久久久| 久久AV色| 精品丰满熟妇人妻一区| 91N综合网| 亚洲不雅视频1区二区| 97操| 俄罗斯一区二区视频在线观看| 午夜乱轮操逼视频免费看| 日本免费人成视频播放120秒| 日韩欧美成人综合在线| 岛国网址国产 | 自怕偷自怕亚洲精品| 在线观看无码三级少妇| 亚洲色 国产 欧美 日韩| 成人日本视频人妻在线| 婷婷五月天小说| 91精品成人www| 人人澡人人弄| 九九九国产精品| 少妇无码999| 超碰在线欧美性爱激情| 熟女五十路一区二区三| 大地资源在线观看中文第二页| 亚洲午夜AV| 女人天堂AV五区在线| 伊人一区二区三区| 新怡红院| 国产成人91一区二区三区| 亚洲自拍天堂| 91狠狠综合久久久| 麻豆福利视频导航| 尤物视频新赏网鲜网色诱网| 97久久国产精品女不卡| 99久久精品无码一区二区毛片免费| 久久直播国产| 成人五月香网在线| 好舒服视频| 久久啊啊啊| 岛国黄| 无码9区| 欧美日韩国产人人| 亚洲图片欧美| 围产精品一区二区三区视频播放| 男人兔费天堂| 99热国产| 亚洲欧美国产中文视频| 久热九九| 熟女AV一区| 9久精品| 亚洲乱码尤物193YW| 97超碰无码网| 高清孕妇孕交 交| 亚洲va有码在线天堂| 亚码激情| 夜夜嗨一区二区三区三州加勒比| 婷婷色综合欧美日韩| 伊人久久大香大香线蕉中文| 中文字幕乱碼在线| 天天网综合| www黄片免费看com| 国产天天看| 无码人妻1727| 国产精品一区二区黄片| 亚洲自拍欧美国产首页网曝| 春色综合网| 黄色av片三级三级三级免费看| 无码91| 国产日本顶级一区二区三区| 岛国片国产成人亚洲播放| 老熟女91av| 欧美成人精品一区| 国产在线视视频有精品| 日韩欧美偷拍美女视频| 91视频伊人| 天天操天天射青青草| 国产97av| 国产超碰人人操| 亚洲性图91| 激情 欧美 亚洲 小说| 亚洲国产一区二区三区在线| 久久在肏| 97av在线视频| 97操97干| 亚欧高清在线| 夜夜爽夜夜摸夜夜操免费视频| 波多野结衣被操50分钟免费视频 | 国产第25页在线观看| 清清草影| 波多野结衣被操50分钟免费视频 | 亚洲夜夜欢无码一区二区 | 国产在线不卡导航| aa片毛片| 男人的天堂成人的社区| 色吧 综合| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 大香蕉中文201| 日本熟女中文| 97色操| 婷婷六月色| 大香蕉淫人网| 日韩精品.久久精品.AV女优.天美传媒| 大香蕉中文201| 亚洲五月丁香花狠狠干一区二区三区 | 亚洲综合中文字幕有码| julia ann久久| 自慰白浆在线观看| 又黄又硬又粗又长国产视频| 婷婷色导航| 丝袜综合网| 国产精品情侣啪啪| 日韩强奸av| 亚洲天堂人人妻| 性久久| 国产精品操| 福利风月五月天影院| 欧美人人曰人人操人人射射| 老鸭窝黄色视频网站| 顶级丝袜熟女一区二区三区| 人人妻人人色一区二区三区| 婷婷五月色| 久久国产在线一区二区| 欧美中字二区| 色欲日韩欧美在线一区| 久久线上视频免费看| 国模限制级电影| 亚洲天天做日日做天天谢日日| 欧美综合网1| 精品少妇一区二区三区在线视频| 欧美日韩在线小说 | 乱伦av.com| 九久久九九久视频| 国产精品情侣啪啪| 蜜乳AV一区| 情色图区| 91在线限制级| 久久肏大逼| 性综合网| 日日日色色色色色| 日韩国语字幕| 国产精品熟女九色九色蜜臀| 久久九九精品一区二区| 国产丝袜美女诱惑| 美國A片| 国产熟女精品一区二区| 99re这里| 九九九九久久久| 日日日日做夜夜夜夜无码| 久久久无码精品人妻二区| 黄色小说亚洲| 亚洲操人| 国产Av超碰| 校园春色 亚洲| 99久久综合| 色五月综合| 国产高清无码一区三区二区| 一二三区精品视频| 麻豆国产成人精品| 中文字幕二区日韩天堂| 操逼操逼逼操操逼91 | 国产第11页| 日韩pv中文| 日韩黄色一区二区三区| 翔田千里爆乳巨臀无码| 熟妇人妻精品一区二区| 色拍偷亚洲| 欧美一二三区四五区| 狠狠操狠狠| 404操逼福利视频| jizz啪啪| 骚女天天综合网| 蜜桃臀一区二区aV| 亚洲黄日韩无码专区| 日本熟妇一区二区三区| 国产美女高潮叫床视频| 日本性爱欧美性爱| 青娱乐休闲视频在线观看| 密臀在线视频| 热久久无毒不卡| 国产久久一区二区| 丝袜性亚洲| 920日本午夜免费| 中文字幕性感少妇av| 亚洲三区视频| 91av一区二区在线观看| 人人操欧美风骚| 好吊色综合| 欧美激情 亚洲色图| 操老熟女AV| 东北女人操比视频| 久操网在线| 久久精品视频28| 欧洲中文字幕| 97网址www| 麻豆天美国美国产AV| 久久思思热| 99精品在线播放| 手机看片1025| av一区二区三区 中文| 久久久久久国产精品免费网站| 被男人吃奶很爽的毛片| 美日韩男女操屄视频| 熟妇综合一区二区三区| 亚洲精品久久久久毛片A片拉屎 | 久偷拍欧美日韩三区| 欧美白嫩女HD| 国产美女口爆吞精| 国产免费久久精品99re韩国| 搞中出视频在线观看| 久久伊人青青草| 久久一二三四不卡 | 成人综合色网| 人人喜人人妻| 日本少妇va7777| 97超碰无码网| 日韩在线观看AV| 日韩人妻网站| 中文字幕后石码四区五区| 天天躁日日躁XXXXYY| 精品无码久久久久| 欧美色视频在线| 欧美综合 站| 无码自拍SM| 亚洲精品黑丝| 激情网色| 操淫穴亚洲五月丁香 | 九九综合九九综合| 懂色AV一区二区三区| 久久久久成人网| 丁香六月啪啪| 伊人九九九| 深爱五月婷婷| 97狠狠| 国产精品久久久亚洲一区| 啊啊啊啊啊啊在线| AV天天在线观看| 懂色aV一区二区天美传媒| 日本 成 人 小说 电影 一区二区| 欧美色图91| 婷婷色一区| aaa亚无码专区| 国产极品久久久| 国产精品一区午夜福利| 超碰视97中文| 九九黄色视频在线观看| 四虎精品永久在线观看| 国内外色色色色色成人视频| 97超碰日韩| 日韩女优中文字幕| 亚洲成人在线高清| 亚洲日韩久久精品一区| 久久99午夜精品一区人妻| 黑丝制服中文字幕| 九九在线视频| 精品国产一区探花在线观看| 色色99| 99久久久er直播网址| 欧洲自拍第一页| 五月天激情小说| 97超碰人人操人人操| 日韩精品人妻中文字幕久久久| 国产福利在线视频网站| 亚洲第一男人天堂| 后X久久| 欧美综合国产精品久久丁香| 亚州综合图片| 操逼日韩无码| 亚洲 暴爽 AV人人爽日日碰| 超碰人妻久久人妻中文97| 十八禁的黄污污免费网站| 综合亚州欧美| 韩国女主播青草福利视频| 国产欧美精选激情视频| 青青草在线视频美女| 欧美综合骚| 欧美日韩国产黄色片| 99草精| 久九九九九九九热| 欧美性爱三区二区| 中文字幕在线免费观看 | 青青草精品| 黄色性爱网网| 97干色| 天综合网欧美| 97久久精品亚洲| 青娱乐亚洲自拍| 人人操人人肉久久精品| 大肉棒导航| 婷婷五月天伊人| 日本日逼高清| 婷婷爽人人婷婷爽视频| 欧洲自拍色图gif在线| 久久乐| 奇米狠999| 国产自制av蜜乳| 久久精品人妻一区二区三区| 男人的天堂成人的社区| 国产在线视视频有精品| 偷拍 欧美 日韩| 97色操| silk lablo在线观看一区二区| 五月天激情小说| 一线黄色免费性爱片| 高潮精品| 深夜激情| 久久久久密臀视频| 蜜色网色哟哟| www久久99| 五十路六十路素人熟女| 国产精品成人午夜福利| 97欧美色综合| 九月AV| 五月天婷婷综合网| 日本欧美亚洲高清在线看| 蜜乳中文字幕a在线| 不卡视频一区蜜桃视频| 中文无线日韩一区| 麻豆精品天美| 国产自产91区13区| 五月天综合| 国产麻豆一级精品视频| 一区二区三区黄色片a| 国产精品com| 99少妇| 死我十八禁| 国产精品电影推荐| 久久深夜无码| 欧美大香蕉在线观看| 九九亚洲| 精品国产肉丝袜在线拍国语| 日日操丁香五月天| 免费av高清无码| 白丝AV| 91视频综合网| 94色色电影网| 亚洲丨在线| 久久宗合97| 热久久无毒不卡| 囯产精品强| 小草av不卡亚洲二区| 超碰人妻久久人妻中文97| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 国产精品自产拍在线观看社区| av天堂天堂av日韩| 九九视频黄色片| 99久久久久久亚洲精品不卡| 人妻一区二区三区四区视频| 狠狠干91| 久草午夜| 九九AV| 深夜福利黄片| 欧美少妇色图| 九九九热| 沈阳熟女高潮对白视频| 久久精品一区二区一8| 蜜桃狠狠色伊人亚洲综合网站| 熟妇人妻精品一区二区| 麻豆AV一区二区天美传媒| 97碰碰色| 91精品91久久久久77777俄罗斯老妇姓x| 亚洲丝袜少妇在线| 亚洲精品少妇| 欧美激情一区| 亚洲欧美色图小说| 国产美女销魂在线观看不卡| 老司机天天操| 五十路三级片| 91干熟女| 蜜桃臀av在线观看| 久妇网| 欧亚第一综合网| 欧美亚洲厕所精品偷拍91| 加勒比伊人影院| 91 亚欧| 色汉综合| 中文字幕美女91| 丝袜剧情| 色综合婷婷| 人妻少妇蜜桃视频欧美一区| 日本九九久久99播| 97国产色图| 国产成人啪一区二区| 亚洲欧美清纯| 乱伦强奸区日韩| 在线观看无码三级少妇| 中国东北熟女老太婆内谢| 日本午夜久久电影| 久久精精区一区二区一蜜桃一区二区| 精品久一区免费| 日韩精品操少妇| 天操天操夜操夜月月年年操操| 91国产丝袜白虎| 免费成人自拍视频在线| 日本精品网站在线中文| 欧美麻豆成人同性GⅤ在线| 成人精品在线观看| 欧美一区二区三区大综合| 亚洲综合69| 国产97色在线| 国产精品久久久久无码Av网曝门| 色色色色日本| 五月激情小说| 欧美精品第四五页中文字幕在线观看| 日本中文字幕一区| 欧美激情在线观看视频| 亚洲 欧美 日韩 国产一区二区 | 久久中文字幕人妻熟av女蜜柚| 亚洲色宗合| 亚洲国产精品9999在线观看| 国产精品免费视频不卡| 中文字幕一二三区| 色偷偷人人玩人人舔人人操人人摸人人爽 | 人妻无一区二区三区| 日韩av影片在线观看| www老逼91| 亚洲国产中文字幕| 毛片一区二区| 乱伦日本色图AⅤ| 爆乳免费黄网站| 国产97综合| 日本操逼视频免费| 欧美成人黄网色网站| 国产自产91区13区| 大香蕉2017| 黄片免费视频2019| 国产成人综合网| 天天插夜夜爽| 97精| 国产又粗又长又爽又色| 啊啊啊啊啊操我视频| www.人人摸在线视频| 亚洲国产成人7777| 国产毛片精品一区二区色欲黄A片| 人妻熟女一区二区三区在线| 精精品人妻一区二区三区| 欧美日日操| 极品五月天噜噜| 青青草中出视频| 国产一区二区在线播放量| 韩日精品四区| 国模91| 大香蕉www.超碰| 国产超碰国产97| 国产精品一区在线播放| 天天操天天射天天日| 1区2区3区在线视频| 骚货操死你| 狠日操| 日本 免费 一区二区三区 久久香蕉| 五月天精品| 一级黄色性爱A级片| 青青草原综合久久大伊人精品| 欧美熟妇色| 天天做日日爱夜夜爽| 99蜜桃臀亚洲成人在线观看| 思思热一热婷婷热一热| 无套内射性感少妇视频| 无码人妻精品一区二区三区九九 | 九九亚洲| 再深点灬舒服灬太大了好硬好爽| 亚洲欧美精品久| 日韩欧美操逼xxx| 四虎永久在线精品免费网址 | 天天干天天舔| 91九九九馒头| 精品一区二区三区丰满熟女-亚洲欧美一区| 偷窥自拍A片| 超碰 国产熟女精品一区| 岛国片国产成人亚洲播放|