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

ARTICLE DETAIL

資訊詳情

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

SQL數(shù)據(jù)過濾核心技巧:從WHERE條件到索引優(yōu)化與安全實踐

SQL數(shù)據(jù)過濾核心技巧:從WHERE條件到索引優(yōu)化與安全實踐 用戶數(shù)據(jù)中出現(xiàn)了學(xué)生成績相關(guān)的數(shù)據(jù)庫設(shè)計正好可以結(jié)合 SQL 數(shù)據(jù)過濾的實操場景來講解。這里我先從最常用的成績單查詢場景出發(fā)講清楚過濾條件的組合與去重邏輯再看復(fù)雜查詢的優(yōu)化技巧。希望這篇的思路和示例代碼能直接幫到你。1. 數(shù)據(jù)過濾的底層邏輯先定位再輸出1.1 過濾的本質(zhì)是行級篩選數(shù)據(jù)過濾說白了就是在一張“滿是數(shù)據(jù)的大表格”里按照你給出的條件一行一行地把不需要的記錄擋在外面只保留符合條件的行。我習(xí)慣把它想象成一個漏斗漏斗口寬進來的數(shù)據(jù)多漏斗頸細篩掉的數(shù)據(jù)多。WHERE 子句就是那個漏斗頸。這個“逐行篩選”的過程是理解 SQL 過濾的第一步。很多新手會把 WHERE 和 SELECT 的順序搞混認為先寫 SELECT 就先生效其實數(shù)據(jù)庫執(zhí)行的時候是先從磁盤或內(nèi)存里把整張表的記錄拿出來然后用 FROM 后面的表按 WHERE 條件做逐行判斷符合條件的才進入下一步。等到 SELECT 真正輸出的時候數(shù)據(jù)已經(jīng)是“篩選后剩下的部分”了。我剛?cè)胄械臅r候做過一張學(xué)生成績表表里有 3000 多條記錄每天要按班級、科目、分數(shù)段導(dǎo)出一份成績單。當(dāng)時我圖的簡單直接用 SELECT 把所有列都輸出再放到 Excel 里手工篩選。后來有一次數(shù)據(jù)量突然翻到 3 萬條Excel 直接卡死逼著我老老實實學(xué) WHERE?,F(xiàn)在回頭看數(shù)據(jù)過濾這個技能越早主動掌握越好因為它是所有 SQL 查詢的骨架。1.2 SQL 執(zhí)行順序決定了你能在 WHERE 里干什么SQL 語句表面上是從 SELECT 開始寫的但數(shù)據(jù)庫的引擎執(zhí)行順序并不是按你書寫的順序來跑的。對于一條最常見的查詢來說實際的邏輯順序大致是FROM確定要從哪張表取數(shù)WHERE對 FROM 取到的每一行記錄做條件判斷GROUP BY按字段分組HAVING對分組后的結(jié)果做二次過濾SELECT挑選輸出哪些列ORDER BY排序LIMIT / TOP控制返回行數(shù)這個順序看起來枯燥但我建議你把它當(dāng)成一個“心法”來背。因為它直接決定了一個新手最容易踩的坑WHERE 子句里不能用 SELECT 里定義的列別名。比如SELECT stu_name, score AS s FROM score WHERE s 60;在 MySQL、PostgreSQL、SQL Server 里這條語句通常都會報錯“找不到列 s”因為執(zhí)行 WHERE 的時候SELECT 還沒開始處理輸出列AS s 還沒有誕生。遇到這種情況要么在 WHERE 里直接寫原始列名SELECT stu_name, score AS s FROM score WHERE score 60;要么套一層子查詢SELECT t.stu_name, t.s FROM ( SELECT stu_name, score AS s FROM score ) t WHERE t.s 60;很多人會覺得套子查詢非常啰嗦但當(dāng)你遇到復(fù)雜報表的時候這反而是最干凈的寫法因為內(nèi)層查出來的臨時結(jié)果集本身就是一張“新的表”外層可以隨意過濾它。同樣的邏輯在 JOIN 里也成立。如果在 LEFT JOIN 之后用 WHERE 去過濾右表的字段會發(fā)現(xiàn) LEFT JOIN 被“改成”了 INNER JOIN。因為 LEFT JOIN 會把右表沒有匹配的行保留下來這些行的右表字段全是 NULL而你用 WHERE 一過濾NULL 不滿足條件就又被刪掉了。這里我后續(xù)在講 NULL 時還會展開但先把這個“執(zhí)行順序決定行為”的意識建立起來。2. 條件表達式的編排從單條件到多條件組合2.1 比較運算符與“不等于”的寫法差異過濾條件最基礎(chǔ)的就是比較運算。、、、、 這五個符號幾乎沒有歧義誰都能看懂。真正容易出問題的是“不等于”SQL 里有兩個寫法 和 !。 是 SQL 標(biāo)準的寫法幾乎在所有數(shù)據(jù)庫里都能用! 是編程語言風(fēng)格的寫法MySQL 里能用SQL Server 里也能用PostgreSQL 里也能用但有些老牌的數(shù)據(jù)庫或某些兼容模式下就不支持。我自己寫的時候一律用 不是因為它多高級純粹是為了減少換數(shù)據(jù)庫時的意外報錯。還得提醒一個容易忽略的值類型問題比較運算符要求兩邊的類型能互相換算。如果拿字符串類型跟數(shù)值比較數(shù)據(jù)庫通常會做隱式轉(zhuǎn)換。比如SELECT * FROM score WHERE score 60;score 是數(shù)值列60 是字符串MySQL 會先把 60 轉(zhuǎn)成數(shù)值 60再把 score 列轉(zhuǎn)成數(shù)值比較??雌饋聿挥绊懡Y(jié)果但是一旦 score 列里面的值比較復(fù)雜或者字段類型本身是 VARCHAR隱式轉(zhuǎn)換就可能造成無法命中索引這個我們在后面性能部分會重點說。2.2 NULL 的坑三值邏輯NULL 是 SQL 里一個非常特殊的存在它不表示 0也不表示空字符串它表示“不知道”或“不存在”。這就引出了一個叫“三值邏輯”的概念在 SQL 里比較運算的結(jié)果除了 TRUE 和 FALSE還有 UNKNOWN。所有對 NULL 做普通比較的表達式返回的都是 UNKNOWN被 WHERE 過濾掉。所以SELECT * FROM score WHERE score NULL;這條語句永遠一條記錄都查不出來。哪怕 score 列里真的有 NULL 值也不會被匹配。正確寫法是SELECT * FROM score WHERE score IS NULL;同理如果要篩選“分數(shù)不為空”的記錄SELECT * FROM score WHERE score IS NOT NULL;我見過很多新手在這里反復(fù)踩坑最典型的就是把 IS NULL 直接改成 NULL然后排查半天也找不到原因。這里有一個日常類比NULL 就像你并不知道一個人的聯(lián)系方式你在通訊錄里找“聯(lián)系方式等于空的人”系統(tǒng)并不知道該怎么匹配“空”不是一個具體的聯(lián)系人它只能靠“查一下聯(lián)系人這一欄是否為空”這個特殊動作來確定。除此之外NULL 還有一個算術(shù)行為任何數(shù)值和 NULL 做加減乘除結(jié)果都是 NULL不是原值。比如想要算總分時SELECT score_1 score_2 score_3 AS total_score FROM score;只要 score_2 是 NULL整個 total_score 就是 NULL。遇到這種情況要么用 COALESCE 函數(shù)把 NULL 轉(zhuǎn)成 0要么用 IS NULL 先做條件判斷把缺失的字段單獨挑出來處理。這個細節(jié)在做成績匯總時特別重要否則你會莫名其妙地發(fā)現(xiàn)“明明成績都不低總分卻不出數(shù)”。2.3 AND / OR 優(yōu)先級與括號多條件組合時AND 和 OR 的優(yōu)先級是個老掉牙但永遠有人踩的坑。AND 的優(yōu)先級高于 OR也就是數(shù)據(jù)庫先處理 AND再處理 OR。這跟數(shù)學(xué)里的“先乘除后加減”邏輯很像。舉個例子。我們要篩選“三班且成績大于 60或者五班且成績大于 80”的學(xué)生SELECT * FROM score WHERE class_id 3 AND score 60 OR class_id 5 AND score 80;這樣的寫法因為 AND 優(yōu)先結(jié)果是對的。但如果漏掉了想表達的意思比如把“班級為 3 班的成績大于 60 分或者成績大于 80 分”寫成SELECT * FROM score WHERE class_id 3 AND score 60 OR score 80;它的意思是class_id 3 且 score 60 的所有記錄再加上 score 80 的全部記錄。后者已經(jīng)包含了所有班級完全不是“三班 80 分”這種窄范圍。要避免這種歧義最穩(wěn)妥的辦法就是加括號SELECT * FROM score WHERE class_id 3 AND (score 60 OR score 80);我自己的習(xí)慣是只要條件里同時出現(xiàn) AND 和 OR一律加括號哪怕有時括號是多余的。寫代碼是給人看的清晰比聰明重要。數(shù)據(jù)庫不會因為少一個括號就報錯但業(yè)務(wù)同事會因為多了一個錯誤條件而出錯誤報表兩相比較括號的成本太低了。2.4 BETWEEN、IN、LIKE 的邊界行為這三個運算符在實際過濾中非常常用但邊界行為很容易被忽略。BETWEEN 是包含邊界值的。BETWEEN 60 AND 80 實際上等價于 score 60 AND score 80。注意它不是等價于 score 60 AND score 80。我之前做成績區(qū)間統(tǒng)計用 BETWEEN 60 AND 79 表示“及格”結(jié)果 79 分的被算了進去80 分的沒被算進去導(dǎo)致統(tǒng)計口徑跟領(lǐng)導(dǎo)預(yù)期的“80 分以上才算優(yōu)秀”對不上來回對了好幾遍才發(fā)現(xiàn)是邊界包含的問題。IN 的作用是匹配一組固定值。比如篩選一班、三班、五班SELECT * FROM score WHERE class_id IN (1, 3, 5);這個大家都會用但它有一個非常隱蔽的坑如果 IN 后面的列表里有 NULL倒不會出錯但如果子查詢返回的值包含 NULL那么配合 NOT IN 就會出大問題。SELECT * FROM score WHERE class_id NOT IN (1, 3, 5);這條看起來是“查不屬于 1、3、5 班的數(shù)據(jù)”但如果把 1、3、5 換成從另一個子查詢得來的集合而子查詢結(jié)果里存在 NULL那么整個 NOT IN 會返回空集——不會報錯但一條數(shù)據(jù)都沒有。原因是當(dāng) class_id 4而集合里有一個 NULL 時4 不等于 NULL這個判斷結(jié)果是 UNKNOWNUNKNOWN 會被過濾掉所以一行都留不下來。如果你真的想表達“排除某些班級”而且要安全處理 NULL最好用 NOT EXISTS 替代 NOT IN這個我們在后續(xù)章節(jié)講子查詢時再提。LIKE 是模糊匹配的關(guān)鍵工具。% 表示任意長度的任意字符_ 表示一個任意字符。比如SELECT * FROM student WHERE stu_name LIKE 張%;會查出所有姓張的學(xué)生。如果想查第二個字是“三”的姓名SELECT * FROM student WHERE stu_name LIKE _三%;LIKE 還有一個轉(zhuǎn)義問題如果數(shù)據(jù)本身包含 % 或 _ 字符比如課程名稱叫“C語言_基礎(chǔ)”直接寫 LIKE %C語言_基礎(chǔ)%下劃線會被當(dāng)成通配符匹配出一個奇怪的集合。解決方法是顯式指定轉(zhuǎn)義字符SELECT * FROM course WHERE course_name LIKE %C語言\_基礎(chǔ)% ESCAPE \;ESCAPE 后面的字符表示緊跟其后的通配符按普通字符處理。這個用法用得不多但真遇到了卡住你半天的情況。因為沒人會告訴你數(shù)據(jù)里還有這些特殊字符你只會奇怪“明明有這條記錄為什么查不出來”。3. 去重過濾DISTINCT 與窗口函數(shù)的實戰(zhàn)選擇3.1 DISTINCT 只能做顯式去重數(shù)據(jù)過濾有時候不只是“去掉不滿足條件的行”還需要“去掉重復(fù)的行”。最直接的就是 DISTINCTSELECT DISTINCT class_id FROM score;這樣能查出所有出現(xiàn)的班級不會重復(fù)。但 DISTINCT 有一個關(guān)鍵限制它對 SELECT 后面出現(xiàn)的整組列做去重。什么意思呢比如SELECT DISTINCT class_id, subject FROM score;它會把 class_id 和 subject 的組合認為是“一行”來去重。一班語文、一班數(shù)學(xué)算是兩條不同記錄因為 subject 不同所以不會被合并。如果你只是想看“有哪些班級”卻誤寫成查兩個字段結(jié)果會比你預(yù)想的多。DISTINCT 還有一個我認為更值得注意的局限它只能去掉整行完全一樣的重復(fù)項并不能按某列去重并保留一行的完整信息。比如學(xué)生選修課表里每個學(xué)生有多條選課記錄現(xiàn)在想取每個學(xué)生最新選課的那條DISTINCT 就完全做不到。這時候就需要窗口函數(shù)。3.2 排名窗口函數(shù)的“最新記錄”過濾窗口函數(shù) ROW_NUMBER() 是處理“分組取最新”場景的利器。它可以在不合并行的情況下給每一行按分組編號。比如學(xué)生選課表 enrollstudent_idcourse_nameenroll_date101數(shù)學(xué)2024-09-01101英語2024-09-10102數(shù)學(xué)2024-09-02要取每個學(xué)生最新的一條選課記錄寫法如下SELECT student_id, course_name, enroll_date FROM ( SELECT student_id, course_name, enroll_date, ROW_NUMBER() OVER (PARTITION BY student_id ORDER BY enroll_date DESC) AS rn FROM enroll ) t WHERE rn 1;內(nèi)層查詢給每個學(xué)生按 enroll_date 倒序編號日期最新的編號為 1外層用 WHERE rn 1 過濾就拿到了每個學(xué)生最新的一條記錄。這個寫法比 DISTINCT 靈活得多因為它保留了所有原始列信息而且篩選條件可以隨意改。比如要取每個學(xué)生“第二個最早”的記錄就把 rn 2 即可。這種技巧在處理數(shù)據(jù)遷移、對賬、埋點日志去重時非常常見。同樣用“去重”這個熱詞時我還推薦另一種思路如果確認數(shù)據(jù)里存在完全重復(fù)的行可以用 GROUP BY 把所有判斷重復(fù)的列分組再聚合其他列。比如統(tǒng)計班級數(shù)SELECT class_id, COUNT(*) AS cnt FROM score GROUP BY class_id;這既能去重又能計數(shù)一步到位。難點在于你要搞清楚“去重的鍵”是什么是單個字段還是多個字段的組合。這個決定了用 DISTINCT、GROUP BY 還是 ROW_NUMBER()。3.3 去重場景的選型建議我在實際業(yè)務(wù)里總結(jié)的選型邏輯很簡單只要整行完全重復(fù)想直接去掉優(yōu)先用 DISTINCT要看某個字段值的分布比如有哪些班級、哪些科目用 DISTINCT 或 GROUP BY 均可要按組保留一條明細記錄比如每位用戶最新登錄、每張訂單最后狀態(tài)用 ROW_NUMBER() 外層過濾要去重后還要做聚合統(tǒng)計比如按班級算平均分用 GROUP BY。這套選型邏輯聽上去很基礎(chǔ)但很多工作了三五年的開發(fā)都可能搞混。我見過一個線上報表原意是統(tǒng)計每個商品的最近一次售價有人用 DISTINCT 做出來數(shù)據(jù)錯亂又有人用子查詢做出來性能極差最后改成窗口函數(shù)一次解決。窗口函數(shù)不復(fù)雜只是平時沒有機會練手建議你在本地數(shù)據(jù)庫里建一張 1 萬行的表多試幾組 PARTITION BY 和 ORDER BY 組合很快就熟了。4. 過濾語句的性能索引、通配符與執(zhí)行計劃4.1 索引命中三件事等值、范圍、前綴過濾條件寫得對結(jié)果對但跑得很慢同樣是個大問題。我在處理慢 SQL 優(yōu)化時第一件事永遠都是看 WHERE 條件能不能命中索引。只要過濾字段上有合適的索引數(shù)據(jù)庫就不用從頭到尾掃全表性能能提升一個量級以上。讓索引生效的前提主要有三個第一過濾列盡量用等值條件比如 WHERE student_id 101這里 student_id 只要建了索引直接按索引樹查找。范圍條件也能用索引但效率比等值稍低比如 WHERE score 60 會走索引范圍掃描。第二不要在索引列上做函數(shù)或運算。比如SELECT * FROM score WHERE YEAR(create_time) 2024;這條語句在 create_time 有索引的前提下依然會慢。因為數(shù)據(jù)庫要對每一行的 create_time 先執(zhí)行 YEAR() 函數(shù)計算再拿結(jié)果跟 2024 比原來的索引就用不上了。正確寫法是SELECT * FROM score WHERE create_time 2024-01-01 AND create_time 2025-01-01;這樣一來create_time 就變成了一個范圍條件索引就能正常走。第三避免隱式類型轉(zhuǎn)換。比如字段 score 是 VARCHAR卻用 WHERE score 60 去查數(shù)據(jù)庫會嘗試把 score 列的值全部轉(zhuǎn)成數(shù)值再跟 60 比這就相當(dāng)于在索引列上做了函數(shù)運算。正確做法是讓參數(shù)的類型和字段類型保持一致如果字段是 VARCHAR就寫 WHERE score 60。這三個原則不算高深但做起來需要養(yǎng)成習(xí)慣。尤其是你會發(fā)現(xiàn)很多 ORM 框架會自動幫程序員把字段包一層函數(shù)導(dǎo)致線上 SQL 慢得離譜最后排查發(fā)現(xiàn)就是這層函數(shù)把索引毀掉的。4.2 LIKE 模糊匹配的前綴優(yōu)先原則LIKE 是過濾中性能差距最大的一個點。規(guī)則很簡單WHERE name LIKE 張% -- 前綴匹配能走索引 WHERE name LIKE %三% -- 包含匹配無法走索引 WHERE name LIKE %三 -- 后綴匹配無法走索引數(shù)據(jù)庫的索引本質(zhì)上是一棵排好序的樹前綴是確定的樹可以按順序查找前綴不確定樹就沒法定位起點只能全表掃描。所以寫模糊條件時要盡量把常量放在前面把通配符放在后面優(yōu)先命中前綴匹配。如果業(yè)務(wù)需求真的需要包含匹配比如搜索姓名里含某個關(guān)鍵詞前綴匹配解決不了有兩個思路一是用全文索引MySQL 的 FULLTEXT適合大量文本場景二是盡量縮小其他先決條件的范圍比如先按班級、按狀態(tài)過濾把數(shù)據(jù)量先減下來再做 LIKE避免在小范圍里全表掃。我實際調(diào)優(yōu)過一張 1000 萬行的商品表原本搜索詞是 %手機%查詢耗時 8 秒后來業(yè)務(wù)方改了需求允許只按前綴搜索查詢耗時直接降到 0.05 秒。性能差別就是這么大。在跟業(yè)務(wù)方提方案時可以優(yōu)先把精度要求擺在前面想辦法讓他們接受前綴搜索實在不行再考慮索引方案。4.3 慢查詢定位看執(zhí)行計劃寫 SQL 的時候誰都說不準優(yōu)化器到底會怎么跑最好的辦法就是直接看執(zhí)行計劃。MySQL 里在查詢前面加 EXPLAINSQL Server 里用 SET SHOWPLAN_ALLPostgreSQL 里用 EXPLAIN ANALYZE。例如EXPLAIN SELECT * FROM score WHERE class_id 1 AND score 80;執(zhí)行計劃里最重要的字段是 type從好到差大致是 const、eq_ref、ref、range、index、ALL。ALL 代表全表掃描是性能最差的情況。還有 rows它顯示優(yōu)化器預(yù)估掃描的行數(shù)這個數(shù)字越接近表的總行數(shù)越說明過濾沒生效。我第一次用 EXPLAIN 是被一個線上報表逼的。一張訂單表 800 萬行按商戶編號和創(chuàng)建時間過濾查詢要 20 多秒。EXPLAIN 一看type 是 ALLrows 顯示 800 萬說明索引完全沒走到。后來檢查發(fā)現(xiàn)過濾字段上根本沒有建索引。建了組合索引之后type 變成了 rangerows 降到 5 萬查詢時間降到 0.3 秒以內(nèi)。從此以后凡是慢查詢我第一時間先看執(zhí)行計劃不看執(zhí)行計劃瞎優(yōu)化就是盲人摸象。5. 動態(tài)過濾條件的安全底線SQL 注入的攻與防5.1 注入是怎么發(fā)生的字符串拼接數(shù)據(jù)過濾既然經(jīng)常要處理動態(tài)條件比如用戶在前端輸入一個班級名稱后端拼接成 SQL 去查那就必須正視 SQL 注入這個問題。雖然聽起來像網(wǎng)絡(luò)安全專題但做數(shù)據(jù)查詢的人如果不懂早晚會把線上數(shù)據(jù)搞到不可收拾。危險代碼長這樣以 Python 為例sql SELECT * FROM student WHERE class_name class_name cursor.execute(sql)如果 class_name 是用戶傳進來的攻擊者在表單里填這一段 OR 11拼出來的 SQL 就是SELECT * FROM student WHERE class_name OR 11這個條件永遠為真整張表的學(xué)生信息都會被查出來。如果攻擊者再結(jié)合 UNION 查詢其他表甚至可以直接讀取用戶表、訂單表后果不堪設(shè)想。這個攻擊之所以能成功根源在于 “用戶輸入被當(dāng)成了 SQL 代碼的一部分”執(zhí)行。過濾條件的本意是只讓數(shù)據(jù)按預(yù)期輸出但因為拼接輸入里的單引號改變了 SQL 的結(jié)構(gòu)。我早期練手寫管理系統(tǒng)時曾經(jīng)在登錄功能里直接用字符串拼接驗證某個賬號密碼sql SELECT * FROM user WHERE username username AND password password 當(dāng)時根本沒有安全意識直到后來讀到“萬能密碼”示例才冒冷汗。攻擊者在用戶名框輸入 admin --密碼框隨便填拼出來的 SQL 變成SELECT * FROM user WHERE username admin -- AND password xxx在 SQL 注釋符 -- 之后的所有內(nèi)容都會被忽略于是這條 SQL 退化成只校驗用戶名不校驗密碼。只要知道一個用戶名是 admin就能直接登錄系統(tǒng)。這就是熱詞里“萬能密碼繞過”的原理。它讓 SQL 的過濾邏輯徹底失效從一個“按條件篩選”變成了“無條件通過”。5.2 參數(shù)化查詢才是正解針對 SQL 注入最有效的防御不是寫各種過濾函數(shù)而是使用參數(shù)化查詢。它的核心思想是把 SQL 的結(jié)構(gòu)和用戶輸入的數(shù)據(jù)分開傳遞數(shù)據(jù)庫先解析 SQL 結(jié)構(gòu)再把參數(shù)當(dāng)成純數(shù)據(jù)注入而不是當(dāng)成 SQL 代碼來解釋。Python 的寫法是用占位符sql SELECT * FROM student WHERE class_name %s cursor.execute(sql, (class_name,))Java 用 PreparedStatementPreparedStatement ps conn.prepareStatement(SELECT * FROM student WHERE class_name ?); ps.setString(1, className);PHP 用 PDO$stmt $pdo-prepare(SELECT * FROM student WHERE class_name ?); $stmt-execute([$className]);我在給團隊做代碼評審時有一條硬性規(guī)定動態(tài) SQL 一律禁止直接拼接字符串必須用參數(shù)化。因為再完善的過濾函數(shù)都有可能被繞過單引號、雙引號、注釋符、十六進制編碼等花式變體能玩出各種花樣而參數(shù)化查詢是從語法層面杜絕了注入的可能性。這里有個小技巧如果一個查詢語句里既有固定條件又有用戶可控的排序字段、表名這種無法參數(shù)化的部分那就要單獨做一個白名單校驗而不是盲目拼接。比如排序字段只能從 name、score、create_time 里選就在代碼里先校驗后再拼進 SQL。5.3 過濾條件的權(quán)限邊界最后補充一點數(shù)據(jù)過濾不只是技術(shù)層面的 WHERE 條件還隱含了權(quán)限控制。一個普通的業(yè)務(wù)查詢?nèi)绻脩魝髁?class_id 1后端應(yīng)該同時帶上當(dāng)前登錄用戶的查看權(quán)限范圍。比如只允許查看自己所屬班級的數(shù)據(jù)那 SQL 就應(yīng)該是WHERE class_id %s AND region %sdata_filter 的粒度越細越能防止“越權(quán)查詢”。我見過不少系統(tǒng)功能看著都有但接口沒有做行級權(quán)限過濾導(dǎo)致一個普通用戶傳入大范圍的條件就能把全公司的數(shù)據(jù)拉出來。這類問題在數(shù)據(jù)層面比 SQL 注入更難發(fā)現(xiàn)因為 SQL 本身沒有語法錯誤只是少了一個條件。6. 常見問題速查與排坑實錄6.1 過濾條件常見錯誤速查表錯誤寫法問題表現(xiàn)正確寫法WHERE score NULL查不到記錄WHERE score IS NULLWHERE class_id NOT IN (子查詢有 NULL)返回空集WHERE NOT EXISTSWHERE YEAR(create_time) 2024索引失效慢查詢WHERE create_time 2024-01-01 AND create_time 2025-01-01WHERE name LIKE %關(guān)鍵詞%全表掃描數(shù)據(jù)量大時極慢盡可能改為前綴匹配或配合其他等值條件縮小范圍WHERE class_id 1 OR class_id 2 AND score 80結(jié)果集不符合預(yù)期WHERE (class_id 1 OR class_id 2) AND score 80WHERE s 60s 是 SELECT 別名報錯找不到列WHERE score 60 或嵌套子查詢SELECT DISTINCT col1, col2組合去重單列不重復(fù)明確需求按需選擇列這張表是我做內(nèi)部分享時一直保留的每次講數(shù)據(jù)過濾總有人能從里面找到自己剛踩過的坑。6.2 我踩過的三個真實案例第一個案例是成績匯總時大量 NULL 導(dǎo)致總分為空。當(dāng)時導(dǎo)出的成績表里缺考學(xué)生的成績是 NULL不是 0。我用最簡單的方式去算總分結(jié)果缺考學(xué)生的總分為空整個排名表錯亂。后來我在匯總前先做了 COALESCE(score, 0)才算對。第二個案例是 NOT IN 的 NULL 陷阱。查詢某個班級的補考名單排除掉一些特殊狀態(tài)的數(shù)據(jù)子查詢返回值里有一個 NULL整個查詢結(jié)果為空我一度以為是數(shù)據(jù)被誤刪了排查了兩個小時才發(fā)現(xiàn)是 NULL 的問題。從那以后我寫 NOT IN 之前都會下意識檢查子查詢結(jié)果是否存在 NULL。第三個案例是 LIKE 模糊搜索導(dǎo)致報表超時。當(dāng)時數(shù)據(jù)量 500 萬搜索姓名的 %XX% 寫法約 6 秒才能出結(jié)果前端一直轉(zhuǎn)圈。后來把搜索需求改成了前綴匹配響應(yīng)時間降到百毫秒級別同時把搜索詞做了長度和白名單限制。有時候不是你 SQL 寫得不好而是業(yè)務(wù)方的需求本來就可以調(diào)整優(yōu)化。6.3 數(shù)據(jù)過濾的調(diào)試方法調(diào)試過濾條件時我有幾個固定的操作習(xí)慣先把 WHERE 條件摘出來單獨跑一遍看返回行數(shù)是否符合預(yù)期。比如疑似多查了數(shù)據(jù)先確認條件數(shù)量再分析哪個條件放得太寬。用 EXPLAIN 看執(zhí)行計劃和預(yù)估行數(shù)確認過濾條件有沒有命中索引。這是排查“慢”的唯一可靠手段不要憑感覺猜。對復(fù)雜條件從內(nèi)到外拆分驗證。比如多層子查詢先查最內(nèi)層的結(jié)果集再逐層往外查每查一層都停下來看數(shù)據(jù)是否符合預(yù)期。這個習(xí)慣能幫你快速定位是子查詢寫錯了、還是內(nèi)外層關(guān)聯(lián)條件沒帶全。我自己在處理數(shù)據(jù)任務(wù)時還會用臨時表分步處理先 SELECT 到臨時表再對臨時表做過濾和二次加工。這種方式雖然多寫幾步但每一步的結(jié)果都看得見出了錯容易追蹤。等邏輯完全驗證正確后再考慮合并成一條復(fù)雜 SQL 去做性能優(yōu)化。收尾一個小技巧最后分享一個我常用的實用習(xí)慣復(fù)雜的過濾條件建議盡量寫成“范圍條件”的形式不要把邏輯全部堆在 OR 里面。例如篩選指定班級、指定科目、指定分數(shù)段優(yōu)先寫成多個 AND 條件拼接而不是每個值都用 OR 窮舉。這樣優(yōu)化器更容易命中組合索引SQL 可讀性也更強。數(shù)據(jù)過濾這個主題看起來是最基礎(chǔ)的 SQL 功能但真正寫好的關(guān)鍵在于對數(shù)據(jù)本身的敏感度——你知道哪些列可能為 NULL哪些字段存在特殊字符哪些條件能走索引。多練多想多記錄排坑經(jīng)驗這些積累會慢慢變成你的肌肉記憶。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天躁日日躁成人字幕aⅴ| 91美女视频。| 91干熟女| 超碰国产精品无码| 亚洲自拍小说| 东京热精品97综合网| 日本色色的视频| 成人久久久| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 操老熟女AV| 亚洲男人bt天堂| 一区二区精品日韩欧美在线观看 | 熟妇的味道HD中文字幕| 亚洲日韩人妻中文字幕一区| 日韩欧美天堂| 蜜桃臀一区二区三区久久| 一区二区三区在线资源| www.av在线观看| 乱伦熟妇一区二区| 日本人妻伦在线中文字幕| 成人精品水蜜桃久久久久久久| 日韩在线AB| 色丁香五月婷婷| 99精品视频在线观看免费| 天天操天天舔| 人人操人人精品影片| 亚洲91网。| 啊啊啊好大好湿| 人人摸人人干| 人妻啊啊人妻啊啊| 亚洲情色五月天 | 果冻传媒一区二区三区| 校园春色综合色| 夜夜嗨AV一区天天| 日韩精品高清资源在线| 91女在线观看| 亚洲综合99999| 欧美少妇熟女| 91N欧美| 五月综合视频| 欧美亚洲丝袜人妻制服99| 色综合久久久久| 日韩不卡a级视频专区| 欧亚性爱在线视频| 中日韩熟女| 中文字幕一区二区在线日韩精品| 久久亚洲AV无码专区国产精品 | 夜夜狼人妻| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 国产91美女视频| 久久99九九九九6666免费观看软件| 亚洲天天精品| 天天狂操夜夜狂日| 中文字幕丰满人妻日本| 亚洲一区操| 思思热在线视频免费| 国产无码成人无码| 欧美午夜视频免费观看| 国产高清26uuu| 九九九九AV| 人妻夜爽夜夜爽| 加勒比99999| 久久亚洲日韩国产欧| 亚洲美女高潮喷水视频| 骚货操死你| 91天堂丝袜美腿| 天天日骚逼熟女| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 91蜜臀在线久久久久| 国产后入精品| 夜夜狠狠躁日日躁色视频| 亚洲大色堂| 超碰99热中文字幕| 大香蕉2017| 欧美97网| 四虎国产精品永久在线囯在线| 国模吧 一区二区三区| 92午夜免费福利视频| 男人高清无码一区二区| 东京热亚洲一区二区| www.婷婷五月天| 国产精品对白内射| 亚洲天天精品| 91内射| 2025年A片视频精品| 熟女五十路一区二区三| 丁香五月天激情综合| 麻豆天美国美国产| 精品久操| 国产精品久久久久久久久AV大片| 久久天天摸| 欧美aⅴ99久久黑人专区| 91熟女.com| 五十路熟女人妻一区二区在线观看 | 国产精品扒开腿做爽爽爽视频| 五月天婷婷在线看| 欧美啪啪女女| 天天综合网1| 婷婷五月天无码| 精品视频一二三中文| 高清国产无码av| 黄色一级视| 人妻在线臀日韩| 夜夜国自区| 精品亚洲| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 蜜桃精品视频一区| 日韩福利综合一区| 任我爽视频在线观看| 欧美高清在线| 俄罗斯一区二区视频在线观看| 色牛牛AV| 亚洲色棕合| 日韩综合97p| 网站A V在线| 五月天丁香| 天天操天天日天天干| 国产女同在线观看视频| 国产天美欧美| 欧美成人一级麻豆| 亚洲日产专区| 91伊人久| 欧亚第一综合网| 久操精品| 96精品在线| 青青五月天| 无码人妻丰满热妇又大又粗| 青青草啪啪网| 一级毛片电影免费看| 屌逼传媒| 襙一襙| 高清不卡一二三区视频......| 上床啊啊啊| 日本精品一区二区中文字幕| 日韩av电影网站| 人人贴人人摸| 偷拍亚洲情色| 久久久九九网站| 偷拍99| 色五月首页| 五十路熟女在线不卡观看一区二区| 欧美国产欧美在线观看| 99精品无码| 成人性爱电影一区二区| 91老司机精品| 欧美性天天影视| 91国产操逼视频| 久久婷婷五月天| 98精品国产乱码久久久久久| 久久九九网| 中国熟妇| 久久久久久久久久久久久久久乱码| 偷拍精品一区二区三区| 色 亚洲 91| 人干人人人操人人摸| 亚州熟妇精品| 99成人| 久久大黄片| 97国产色综合| 顶级丝袜熟女一区二区三区| 中文字幕国产| 韩国久久97| 青娱乐老司机视频| 成人精品视频一区二区| 91校园春色长篇| 天天日天天干天天操| 精品然女一区二区| 五月激情啪啪| 日韩乱伦AⅤ| 99精品无码| 亚洲综合97中文网| aaa一级黄片| 欧美夜夜草视频| 欧美夜色| 亚洲天堂区| 人妻丰满熟妇一区二区三| 国产精品一二三| 欧美精品成人亚洲| 操高情无码| AV中文字幕三四五| 天天澡天天爽日日av| 久久99午夜精品一区人妻| 国产美女激情| 亚洲乱色视频一区、二区在线| 国产精品亚洲高清在线| 男人的天堂一区| 欧州激情视频在线一区二区| 婷婷色导航| 国产精品ⅴ无码大片在线看.| 亚春色色| 人人妻天天做天天爽| 毛片中心9视频99| 国产51色综合久久免费| 久久神马| 久久人妻无码毛片A片麻豆| 91neishe| 五月丁香婷婷色| 亚洲色色探花| 91成人精品在线播放| 青青草中文字幕| 劲爆欧美人妖三区91| 艹我哪美一区无码| www.激情| 91蜜桃婷婷狠狠久久综合9色| 超碰国产精品久| 亚洲欧美日韩不卡人妻| 精品人妻少妇| 中文字幕熟女人妻丝袜丝| 色色色网站| 国产av美女被艹的乱叫| 美国精品国产精品| 日日噜噜夜夜狠狠视频无| 日日操夜夜操天天操免费观看麻豆| 亚洲AV色图一区| 97公开久久| 96爱综合| 欧美国产一区二区三区麻豆传媒| 第四色色综合91| 婷婷色一区| 久草视频分类在线| 中文字幕第页| 不卡人妻少妇精品毛片一区23区视频 | 激情AV| 爽 好舒服 无码刺激久久| 乱伦图一区| 欧美精品一区二区少妇免费A片| 欧美综合自拍| 大二网站亚洲| 人人贴人人摸| 色青青久久影视| 国产精品一区二区黄片| 免费一级视频特黄色大片| 岛国黄色大片网站| 婷婷丁香六月| 日日夜夜国产综合| 加勒比av网| 蜜臀久久99精品久久久久久成人小说 | 欧美传媒| 日韩国产在线观看av| 欧美性爱中文字幕无线码| 一类av片在线看| 免费一级特黄特色大片在线观看看| 外站AV在线| 日本一区二区三区午夜观看| 欧美性生活免费网| 国产综合操逼高清| 久久精彩视频| 大香蕉99热| 九热超碰| 欧美亚洲中文字幕| 91在线精品一区二区三区| 婷婷五月天久久精品视频一区二区三区| 宅男91视频在线播放| 成人无码专区精品视频| 亚洲午夜蜜臀| 好爽免费视频| 亚洲精品天堂久久A∨51成人漫| 欧美一级国产一级| 亚洲精品久久久久久久久豆丁网| 男人天堂综合| suv精产一二三区| 日本韩高清无砖码22o| 国产成人99久久亚洲综合| 亚洲精品国产精品成人| 国产久久成人| 五月天婷婷欧美三区| 免費人妻夜夜爽天天爽爽一区| 色香在线| 男人天堂网址| 欧美精品日韩一区二区| 麻豆黄四叶草网站| 啊啊啊啊好爽好舒服一区二区易域| a片久久久久久久久久久久 | 在线情色电影 91大| 欧美亚洲韩国视频十五区 | 九九热免费视频| 亚洲国产一级中文综合久久天堂在线免费观看| 欧美一品道| 日本操逼无码| 国产成人亚洲精品自产在线| 色亚州人久干视频在线观看免费版| 91亚洲网站| 无码高清国产AV| 最新欧洲欧美日本激情网站| 亚州欧美综合| 人人操人人插人人摸人人干| 久久久久久大| 亚洲情色欧美| 色色热| 欧美伦乱| 家庭乱伦性爱av| 欧美色三级片91| 亚洲黄色电影| 天堂中文资源在线bt| 青青草在线视频人人想人人上| 伊人欧美大香蕉视频| 国产一区在线观看无码AV | 超碰久久网| 起碰97| 精品一区二区啪啪啪| 久久久久久裸体| 亚洲AV噜噜狠狠网址蜜桃动漫| 久久久久精| 久久9999 | 无码少妇精品一区二区60岁老人| 歐美性天天| 欧美高清无码免费视频高清版| 欧美色图天堂在线| 欧美 色 亚洲| 日本有码久久| 狠狠色噜噜狠狠狠狠2018| 天天影视综合网欧美精品| 黄骗免费网站| 神马午夜久久久| 少妇一级婬片免费放一级a性色.| 东京热不卡视频| 亚洲 欧美 偷拍 唯美| 日韩国产十八禁| 国产精品不卡一区二区电影| 日本人妻天堂网站在线播放| 天天看特黄的免费网站| 成人自拍三级在线观看| 97就爱干| 亚洲va综合va国产va中文| 亚洲欧美清纯| 久久国色天香香蕉| 国产三级多多影院2022国产AA一级毛片无码| 亚州精品丝袜-不卡成人免费| 国产黄色影片在线观看| 久久久精品久久| 色99视频| 五月丁香六月综合缴清无码| 亚洲美女黄色| 国产 码在线成人网站| 啊啊啊水好多| 神马久久中文字幕| 成人三级片无码| 日本久久久久久久久久| 亚洲熟妇乱女区二区三区| AV乱伦国产| 欧美在线色| 亚洲av无码成人精品国产| 天天日夜干| 日日黄色三级网站| 欧美性爱五月天| 视频国产欧美在线播放| 加勒比少妇AV婷婷六月天超碰超碰| 在线观看中文av字幕| 精品久久久久久久| 亚洲图片在线| 欧洲熟妇xxXx欧美老妇裸体| 国产品精品自在在线午夜免费 | 精品无码一区二区三区| 女人爽到高潮久久久| 精品日韩人妻视频| 超碰欧美COM| 人人爽天天爽| 精品伊人久久久大香线蕉小说| 国产午夜精品在线观看| 尤物AV免费网站| 熟妇高潮一区二区免费视频| 欧美日韩国内不卡| 黄色片A级一区二区三区| 91痴汉| 亚洲色资源| 99热免费| 国产精品熟女乱伦| 欧美经典一区二区三区| 亚洲精品人妻在线| a片在线播放| 亚洲综合有码| 啊啊啊久久久视频| 久久日本熟妇熟色高清| 18一区二区三区| 国产福利精品最新在线| 操B在线观看| 日韩免费高清大片在线| 啊啊啊啊好爽好舒服一区二区易域| 91丝袜在线视频| 99热综合| 91在线视频免费中出| 99热自拍| 99热精品在线| 3p国产欧美99热| 国产一级作爱毛片| 91丨熟女丨丰满熟女| 操逼天美3区| 100啪啪视频大全| 无码久久国产 | 江都AV在线| 九九九九久久久| 高清国产av无码| 欧美顶级黄片AAAAA在线免费看| 国产久久av| 91黑人无码激情在线| 国产极品美女高潮无套在线观看| 国产亚洲精品激情| 日本操逼视频免费| 成人无码在线超碰网| 性色AV网站| 亚洲春色一区二区三区| 成人性爱AV在线免费观看| 久久精品一区二区一8| 大香蕉综合网| 欧美第一页| 国产在线视频午夜精华在| 97香蕉网| 成人无码在线视频网站| 搡老熟女老女人老熟妇免费视频| 亚洲乱伦图片视频| 免费视频a级毛片免费视频| 久草免费在线一区二区| 亚欧韩av| 丰满少妇一区二区三区专区| 欧美性区| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 熟女人妻av在线资源,黄色的资源| 长长久久免费视频| 英伦大奶子熟妇吊带| 欧美 日韩 国产传媒| 一牛一区二区三区久久| 91模特在线观看| 亚洲欧洲综合| 成人乱人伦一区二区| 日韩av一级黄片| 婷婷丁香五月激情啪啪| 国产suv精品一区二区四区999| 超碰97资源大奶| 欧美一品道| 热99这里有精品综合久久 | 秋霞午夜视频一区二区| 91老妇女| 看免费的黄片| 一线黄色免费性爱片| 国产日韩欧美三级片| 五月激情小说| 91最新综合| 91 综合网| 黄色操人| 啊啊啊啊嗯嗯嗯用力好爽| 青青操少妇| 激情文学亚洲| 日韩操逼HD| 天天综合精品| 日日妻色网| 五月亭亭六月丁香| 日韩中文字幕在线视频观看| 大香蕉宅男伊人| 日本超碰97日韩精品人妻| 久久久久久九九九九九 | 97国产色图| 91精品人| 欧美少妇大量自拍视频在线观看| 97爱啪| 爱妃国产亚洲视频中文字幕| 99久久综合| 日日干夜夜操视频h| 精品传媒在线一区| 日韩中文字幕视频在线观看| 久久精品老司| 国产高清午夜成人在线观看| 婷婷成人五月天| 久久久久久免费电影| 日韩中文字幕国产| 四虎影视在线| 中文乱码字幕观看| 日韩成人精品中文字幕| 亚洲 欧美 日本 国内 首页| 欧美精品99久久久**| 人人手机欧洲亚洲国产人妻| 日本欧美不卡| 97人妻碰碰中文无码久热丝袜| 射丝袜大香蕉| 亚洲熟女中文字幕在线| 一区二区播放| 在线日韩视频| 五月天久久人妻| 亚洲图片欧洲图片aⅴ| 欧美成人色| 操逼视频国产无套| 国产自产91区13区| 国产亚洲福利第一页丝袜| 欧美性天天影视| www.91视频网| 青青青操| 夜夜草天天| 91网18| av强奸乱轮| AV天堂男人的天堂| 做爱A级亚欧| 欧洲小说色图视频另类| 性爱边摸边日免费AV| 久久精品国产精品| 欧亚性爱视频免费看| 美女让帅哥通她小鸡鸡| 国产在线视视频有精品| 玖玖综合网| 中文字幕艹艹| 国产无码精品高清| 一区二三区四区视频大全套| 久久一区二区三区入口| 人人妻人人爽人人精品| 最新国产亚洲精品精品国产亚洲综合| 久久久久久久| 天天弄欧美| 亚洲人妻在线一区| av2014 日韩在线中文字幕| 日本色色网| 神马麻豆福利院 | 色综合天天| 亚洲激情深爱文学小说网站| 精品一区二区三区蜜桃臀赵总 | 成人国产视频在线观看| 天天天乱色综合全| 五月天色色网站| 亚洲综合影院| 91操人| 日韩少妇一区二区三区| 久草尤物| 97精品视频在线| 欧美拳交在线播放| 人妻 中文 日韩| 97操碰| 嗯嗯啊啊操死我| 亚洲第一黄色av网站| 中文字幕黄色一起草| 欧美激情视频一区二区三区不卡| 网页导航五月天免费一二三区| 黄色无码高清黄色无码网站| 夜夜青青无码影院| 91青视频| 日本肏逼视频在线观看| 无码人妻一区二区三区色欲aⅴ| 欧美激情黑人| 97色欧州| 亚洲 欧美 天天| www..com操老师| 亚洲中文字幕av | 中文字幕在线24| 免费中文在线| 天天操夜夜操狠很操| 国产999精品久久久| 超碰久久草| 天天爽爽爽爽| 五月婷婷性爱| 欧洲一级性爱视频在线观看| 日本潮催一卡操| 久久αⅴ| 久9爱经典视频| 精品96久久| 日本一区二区三区欧美日韩中文字幕| 天天躁日日躁AAA片李宗瑞| 吖在线不卡一区二区国产剧情| 不卡视频一区蜜桃视频 | 亚洲天堂第一页| 日本熟妇一区二区三区| 国产精品国产自产高清AV| 久久久久97| 欧美日韩制服| 欧美色图另类图片| 人人操人人精品影片| 青青伊人加勒比海| 1204av韩国| 肉丝网站91| 色九九九| 91久久18禁| 特级大荫道BBwBBwBBW| 亚洲综合春色| 国产玖玖| 在线啊啊啊啊| 嗯嗯啊啊啊好舒服| wwe 天天干.com| 在线观看一卡二卡| 国产suv精品一区二区四区999| 亚洲欧洲偷拍一区| 狼天天狼天天大香蕉| 国产人妻精品久久久一区二区三区| 激情五月综合| 亚洲日本成人动漫| 国产女上位好爽在线| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 九九九九九九九九九五码| 99re只有精品| 97视频7| 樱花草社区www中国| 久久99草| 毛片99-全集电影手机免费观看完整-B029AV| 激情综合网一盗摄| 18精品一二区| 超碰97久久| AV天堂国产| 家庭乱伦网站国产| 超碰免费人人| 国产精品国产拍高清AV| 性色高清在线| 九九九九免费高| 四虎免费在线播放| 高潮精品| 免费伦费视频在线观看| 人人扣人人操| 78p欧美| AV色图| 欧美女同在线| 秋霞网—男女啪啪亚洲免费体验区| 丰满岳乱妇一区二区三区| 国产精品无码AV网站| 99热综合| 欧美日韩亚洲五月天婷婷| 亚洲情色 自拍| 人妻少妇久久中文字幕一区二区 麻豆| 亚洲无线码欧洲精品区别| 激情干在线| 精产国品一区二三产品| 怡红院亚洲怡春院av| 天天综合网~91| 巨爆乳一区二区爆乳区| www.色婷婷| 97这里都是精品| 日韩无码第3页| 88xx成人精品视频| 久久婷婷影院| 亚洲熟妇丝袜在线观看| 91爱剪切久久| 欧美亚洲另类在线蜜桃| 1956日韩精品| 噜噜噜噜天天狠狠| 日韩精品人妻一| 伊人综合色网| 久久精品夜色国产亚洲AV| 中文字幕精品码亚洲| 国产精品久久久久久久AV大片 | 99re这里只有精品中心播放| 中文字幕视频在线观看| 蜜臀久久99精品久久久| 久久婷婷热| 日韩精品怡红院| 校园春色五月天| 黄色av一区二区在线| 亚州人妻| 亚洲性爱成人| 亚洲色图超碰在线| 日韩国产九九精品一区二区三区毛片| 秋霞操逼片| 人人手机欧洲亚洲国产人妻| 欧美中日韩XXXX| 国产精品成人蜜臀AV在线| 神马久久久久久久久久久久| 特色a在线上| 欧亚性爱啪啪| 日韩欧美天堂| 777奇米影视777四色| 国产熟女二区| 国产精品干干干| 男女激情中文字幕| 狠狠色噜噜狠狠狠狠2018| 国产av白丝| 日韩欧无码一区二区三区免费不卡| 性爱视频久久| 男人亚洲天堂| 色月天AV导航| 日韩 国产 欧美自拍| 久久精品亚洲婷婷| 2023天天操夜夜操| 自拍欧美| 脫衣舞一区二区三区| 亚洲人成色9999精品久久| 亚洲欧洲成人在线电影| 99国产在线绯色一区| 国产美女在线精品免费看| 熟妇熟女视频一区二区三区| 精品福利| 嗯……啊…嗯嗯…啊…好舒服| 91精品人| 啊啊啊快操我视频| 中文一区在线视频| 一区e区三| 婷婷五月天影院| 色香欲影| 岛国精品视频在线观看| 国产美女裸体秘 永久无遮挡| 国产女性无套 免费观看| 色欧美色交综合| 很很干很很操| 国产家庭乱伦表演| 亚洲性综合| 色色丁香| 亚洲国产成人精品久久久国产成人一区二区| 日本 免费 一区二区三区 久久香蕉| 国产av激情无码久久天堂| 欧美91在线+|+欧美| 国精精品无码一二三区水多多| 国产九九九九九九| 欧美有码激情视频一区二区三区| 大肥女高潮bbwbbwhd视频| 91+欧美| a级成人毛片免费视频高清| 狠狠色五月亚洲91| 麻豆福利视频导航| 欧美黄片欧美黄片xxx| 清纯唯美综合| 精品视频专区| 超碰人人色| 中国操逼无码| 国产女人9999| 日韩一级二级| 日本性爰一道本| 天堂8在线新版官网| 78m啪啪啪| 日韩情色AV| 成视频在线观看免费看| 操www| 色偷偷2020免费视频播放| 精品乱子一区二区三区99| 国产强奸超碰AV| 日本不卡五区| 大香交| 人妻中文字幕日韩电影| 夫妻AV网站| 一区二区三区蜜桃成人撸久久东京热| 播播亚洲小说亚洲| 乱伦熟妇一区二区| 四虎影视国产精品| 日韩少妇无吗| 67194无码不卡| 青娱乐国产精品| 91深夜夜| 日韩免费a级毛片无码a∨| 美女天天干| 久婷婷一区| 亚洲欧洲偷拍一区| 懂色AV蜜臀无码精品APP | 足交视频老司机| 干B视频伊人网| 91人妻爽爽人人做人人澡| 国产日韩欧美操逼视频| 欧美色999| 亚洲亚洲亚洲天堂天堂| 蜜桃不卡一区二区| 久久大香蕉手机高清| 九九色逼| 亚洲欧洲激情卡通另类文学四射小说网站| 亚洲日韩黑丝| 欧美少妇性乱| 色诱avtt| 国产天美欧美| 亚洲日韩一区电影| 综合婷婷| 国产又粗又又黄又猛| 日本免费亚洲欧美| 久精品无码av一区二免费国产在线观看 | 国产免费内射视频| 97鸡把在线视频| 国产精品夜夜夜| 夫妻AV网站| 久久成人精品| 亚洲色图片区| 欧美色青| 欧美在线91| 精品人妻中文字幕高清| 欧美精品三级黄片| 欧美极品美女aaaaaa级黄片| 又大又大又大又粗爽高潮观看 | 精品人妻一区二区三区蜜桃视频| 日韩无码一级黄色av片| 国产乱码久久久| 99热精品在线观看| 超碰碰97资源站| 三四中文字幕| 日本精品五区| 蜜乳中文字幕a在线| 成人蜜乳小视频网站| 欧美天天综合| 不卡中文字幕aⅴ在线| 日韩熟女操逼| 强奸乱伦大香蕉| 岛国视频免费在线观看| 欧美亚洲日本视频久久久 | 欧美日韩人妻精品一区二区三区| 欧美综色欧| 天天日天天干少妇日| 国产精品精品系列在线观看| 人人操 欧美| 国产精品999zyz| 天天综合网站| 久艹伊人精品综合在线| 中文一区在线日| 999国产精品999久久久久久| v91av| CCYY草草影院地址入口| 高清国产无码av| 国产浮力影院第1页| 国产成人网| 久久久久久大| 欧美在线|亚洲| 九九九只有精品| 91老妇女| 特色a在线上| 色综合久久av| 可能人人看人人摸| 99视频只有精品| 亚洲网自拍| 91 国产丝袜在线播放-百度| 9久9久| 国产精品一区二区手机看片| 福利在线黄片| 亚洲人在线成线成人| 我爱搞逼综合网| 天天噜| 色哟哟511老熟女| 天天做天天爽| 熟女网站最新| 久久久久久九| 99热只有这里有精品| 欧美一区二区日韩传媒搭讪精品| 日本五十路在线| 亚州性色| 国产欧美岛国精品一区| www.五月天| 亭亭在线资源| 无码久久国产 | 国产欧美黑人丰满在线| 香港澳门日本三级网站| 久久国产对白激情浪潮| 99久久久er直播网址| 亚洲日本大香蕉1| 性爱动态120秒| 老司机福利青青草| 91人人看| 成人一二| 日本99一区二区| 超碰97男人| 9美女超碰在线免费观看| 日韩在线一区高清在线| julia在线观看久久| 激情欧美97| 国产精品免费视频不卡| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 国产超碰| 日本道日本道中文字幕日本道最新日本道在线观看| 婷婷超| 麻豆久久视频在线地址| www亚洲欧美| 717影院理论午夜伦八戒| 97在线观视频免费观看| 黄片qw| 久久久久中出| 精品欧美老熟女一二区| 日本精品一区二区中文字幕| 97网址97| 亚洲高清无码AAA久久久精品| 蜜桃成人1区2区3区| 97欧美综合| 婷婷久草一区二区三区| 91狠狠综合久久| 婷婷色综合| 九九久久玖玖| 亚洲欧洲小说图片视频| 日日超碰亚洲| 日日夜夜骚| 久久久99免费| 91爱做| 男女激情黄色网址| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 久久久久久AⅤ无码免费肉站| 久久综合精品一区二区三区| 亚洲在线网站| 亚洲一二三四区机械| 无码高清操逼网址| 欧美精品久久| 欧美成va视频网站| 99re视频这里只有精品| 中文字幕在线观看丝袜| 99草精| 大香蕉碰碰| 精品国产av一区二区三区四区入口| 人妻天天爽夜夜爽精品2| 激情黄色片在线观看| 91爱看| 精品人妻中文字幕4399| 97超级色碰碰| 女优视频第10页| 国产一区二区三区高清视频| 人妻精品一区二区全免费| 国产A v无码专区| 欧美日韩久久精品爱爱| 亚洲日韩av一区二区三区百合| 91人精品妻入口| 天美传媒精品一区二区三区| 婷婷亚洲色| 成人资源中文字幕在线观看| 青青11操操操操操操操操| 小说区 图片区色 综合区| 精品十三区| 亚洲aV性爱| 久久香蕉国产线看观看亚洲女人 | 男人的天堂2018.| 久久av一级av少妇av高潮| 午夜美女诱惑电源网| 久久手机好看网站| 国产强上视频在线观看| 97狠狠| 干B| 欧美午夜精品久久久久久3D| 大香焦A片| 91爱网| 男人的天堂在线| 国产CHASE男男GAYGA 毛多色婷婷| 久久精品久| 日本97久久久精品| 九九热精品| 95自拍视频在线观看| 久久超碰com| 久9久9久9久9久9久9| 欧美偷| 欧美色天堂网在线视频| 久久黄黄| 亚洲制服aⅴ中文字幕| 香蕉国产精品麻豆亚洲欧美日韩 | 中文字幕一区二区免费在线| 色九久| 天操天操夜操夜月月年年操操| 亚洲精品久久久久久久久豆丁网| av日韩在线观看电影| 天天视频网站黄| 国产馆| 欧美日韩另类字幕中文| 99国产精品久久久久久久成人热| 素人播放一区| 久久亚洲婷婷| www.91理论| 国产精品一区二区三区四区五区| 日韩内射视频| 国产刺激视频| 99色视频| 五月婷婷激情网| 亚洲一级黄色毛片| 精品大全99999| 香蕉av一区二区三区| 手机久操欧美综合色码| 91大神电影天堂| 大香蕉宗合网在线| 操逼无码一区| 成人七区| 亚洲天堂中文字| 秋霞一级A片黄色视频| 加勒比综合网| 久久这里只精品免费福利| 久久久新亚洲AV| 在线视频亚洲无码| 久久精品久| 日韩在线国产字幕| 白丝一区| 国产家庭乱伦表演| 欧美日韩性爱电影在线| 亚洲精品一区二区精华| 午夜福利国产欧美日韩夜夜| 婷婷性网| 大奶的诱惑| 超碰95| 2023天天操夜夜操| 少妇高潮流水av免费| 精品国产无码中文| 日本操逼二区| 色香色欲天天综合网天天来吧| 国产成人无码高清| 香蕉久久国产AV一区二区| 国产福利小视频高清在线观看| 日韩中文字幕精品一区在线| 一区二区三区黄色片a| 精品视频免费在线一区| 殴美在线AⅤ| 91日本在线观看| 立川理惠加勒比无码| 奇米狠999| 老司机深夜18禁污污网站| 久久久久久久久久久免费精品| 777AV电影| 激情 欧美 亚洲 小说| 亚洲精品官网在线观看| 久久丁香五月婷婷| 欧美熟爽综合| 99色骚| 欧美少妇高潮视频| 亚洲色图 欧美| A级国产欧美激情在线| 男人在线天堂| 人妻少妇被猛烈进入中| 欧美在线观看综合国产| 青青草日韩无码| av天天在线| 日韩图色| 小日子操bb在线看| 一区二区三区激情在线观看| 中文字幕亚洲在线一区| 国产少妇与亚洲av| 60秒免费小视频| 欧美操逼录像国产黄色国产| 亚洲欧美综合图片| 亚洲无码成人精品| 五月丁香综合| 久久中日麻豆| 久久一二三四五六七八九区区| 国产精品一区二区三区四区五区| 超碰在线人妻中文字幕| 久99热| 亚洲Av噜噜一区二区三区妖精| 97视频在线看| 激情综合二| 精品妇女一区二区三区| 色综合中文字幕不卡| 国产欧美日韩臀| 久久久久女教师免费一区 | 美女让帅哥通她小鸡鸡| 蜜臀久久99精品久久久久久-DVD原版全| 小视频国产| AV色天香在线| 亚洲高清91| 国产树林里野战在线看| 日本九九久久99播| 超碰天天操| 国产福利视频精品视频| 久久婷婷伊人| 美女露胸露奶头| 情色大香蕉| 亚洲精品影视老司机| 天天爽夜夜操| 亚洲情色综合网| 国产中文字幕在线点播| 艳美熟妇先锋一二三区| 亚洲色天堂九9| 日韩在线地址一| 蜜桃久久综合视频| 啊啊啊久久| 97最新在线播放视频| 亚洲成人色情五月天丁香花| 人人么人人操| 成人在线视频二区| 深喉吞精| 凹凸视频在线观看伊人| 偷窥自拍亚洲色图| 久久久不卡| 亚洲精品三| 激情文学小说一区二区| 在线看片国产精品每日更新| 超碰人妻中文在线| 精品久| 久久久啊啊| 97在线免费观看视频| 日本超碰在线国产一区| 好看的久久不射无码影视影院| 淫淫综合网| 日日噜噜夜夜狠狠视频无| 日韩天堂av电影在线观看| 午夜精品久久久| 亚洲人成色9999精品久久| 亚洲伊人成综合成人网| 97精彩视频网站| 丁香色狠狠色综合久久小说| 欧美人人AAA| 欧美日韩人妻精品一区二区三区| 男女激情黄色网址| 啊啊啊啊啊好舒服视频| 中文字幕人妻资源在线| 99re8超碰| 亚洲国产成人精品999| 99热精品国产| 无码乱人伦中文视频| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 亚洲91色| 久久久久七视频| 99国产精品视频尤物| 日日日色色色色色| 在线岛| 大色网久久| 嗯嗯啊在线视频| 久96热在线观看视频| 日本中文字幕一区| 日本三级韩三级99久久| 国产精品一区二区密臀| 午夜激情床戏激情| 天天躁日日躁AAAAXXXX国产 | 日本性爰一道本| 91天射| 亚洲人人操| 亚洲天天综合| 啊啊啊啊啊啊在线| 亚洲吊色| 久久久久国产一区二| 酒色综合网| 人人爽天天爽| 国产精品999zyz| 亚洲欧美校园| 91亚洲精品青草| 国产一区二区三区导航| 久久久久女教师免费一区| 亚洲精品啪视频| 99热销国产这里有精品| 六月色婷婷| 在线观看成人性爱免费小视频| 欧美激情黑人| 视频二区熟女人妻| 亚洲精品视频在线播放| 日韩亚洲欧美中文字幕| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 综合大香蕉美。| 人妻精品综合中文字幕在线 | 伊人AAA| 欧美日韩 强奸乱伦| 久久久月天| 免費人妻夜夜爽天天爽爽一区| 国产做?爰片久久毛片?片美国| 东北女人无套内谢视频| 色天堂在线观看| 97舔舔| 亚洲最大AV网| 中国AV美女| 久久岛国| 九九九九九九免费视频| 99自拍视频| 久久精品久久九九精品| 欧美双插| 91热热色| 精品人妻一二三四区视频| 高潮内射在线| 亚洲男人bt天堂| 操逼网站视频漫画国产| 欧美日韩性爱电影在线| 人人操人人摸超碰| Julia Annxxxxx| 欧美一二在线| 亚洲综合97中文网| 加勒比大香蕉视频在线| 国产中文字幕曰本毛片| 天天激情综合站| 被男人吃奶很爽的毛片| 婷婷五月天激情四射| 中文字幕av片| 激情文学亚洲| 日韩中文字幕2020| 青青草原综合久久大伊人精品| 中文字幕在线观看二区三区| 少妇人妻好深太紧了vr91| 老司机午夜精品视频| 大屁股熟女一区二区三区| 劲爆欧美人妖三区91| 97超碰逼| 刺激性视频黄页| 国产黄色动态精品| 色综合中文字幕不卡| 日韩三级一区 | 亚洲综合99999| 玖玖资源中文字幕制服丝袜| 啊好爽受不了无码| 欧美AB在线观看| 98一区二区精品| 天天综合,91综合永久| 亚洲人人操| 91搞逼视频| 日日操免费视频| 国产超碰AV在线精品|