亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

MySQL索引優(yōu)化實(shí)戰(zhàn):從B+樹原理到EXPLAIN慢查詢排查

MySQL索引優(yōu)化實(shí)戰(zhàn):從B+樹原理到EXPLAIN慢查詢排查 很多人在面試的時(shí)候能把索引背得滾瓜爛熟B樹、最左前綴、覆蓋索引、回表……但真正到了線上一條慢查詢打過來(lái)能快速定位到是索引問題、并且能給出合理優(yōu)化方案的人其實(shí)并不多。我見過不少同事建索引全憑感覺查詢條件里出現(xiàn)什么字段就給什么字段加索引結(jié)果一張表上掛了十幾個(gè)單列索引寫入越來(lái)越慢查詢卻沒快多少。這篇文章不打算重復(fù)教科書上那些概念而是結(jié)合我這些年踩過的坑把MySQL索引從設(shè)計(jì)到驗(yàn)證、再到日常維護(hù)的完整思路捋一遍。無(wú)論你是后端開發(fā)、DBA還是剛接觸數(shù)據(jù)庫(kù)的新人只要按照這個(gè)思路去分析慢查詢基本都能找到方向。1. 索引到底是什么先搞懂B樹這棵大樹的底層邏輯1.1 沒有索引的時(shí)候MySQL是怎么找數(shù)據(jù)的在沒有可用索引的情況下InnoDB 對(duì)表的查詢幾乎是純體力活從表的第一行開始一行一行往下掃直到把所有行都檢查完這就是我們常說的全表掃描。在線上環(huán)境里我經(jīng)常在慢查詢?nèi)罩纠锟吹綆装偃f(wàn)行的表一條查詢直接拖到幾百毫秒甚至幾秒十有八九就是缺索引或者索引沒被正確使用。為什么全表掃描這么慢對(duì)于 InnoDB 來(lái)說數(shù)據(jù)是按主鍵聚簇存放的也就是說 B樹的葉子節(jié)點(diǎn)上完整地保存了每一行數(shù)據(jù)。如果沒有索引可用優(yōu)化器只能把整棵樹的葉子節(jié)點(diǎn)全部讀一遍I/O 量幾乎等于讀完整張表。對(duì)一張千萬(wàn)級(jí)別的表來(lái)講即使按照順序讀也會(huì)產(chǎn)生大量的磁盤 I/O 和內(nèi)存拷貝。拿生活里的場(chǎng)景類比一下全表掃描就像一本沒有目錄、沒有章節(jié)號(hào)的字典你要找一個(gè)字只能一頁(yè)一頁(yè)翻。這個(gè)行為在數(shù)據(jù)量小的時(shí)候還能忍受幾千行全表掃也就幾毫秒但數(shù)據(jù)量一旦上去了響應(yīng)時(shí)間就會(huì)斷崖式變差。很多新人容易忽略的是全表掃描并非一無(wú)是處當(dāng)表很小或者查詢需要讀取超過一定比例的數(shù)據(jù)時(shí)全表掃描反而比走索引更高效。這也是為什么有時(shí)候你明明建了索引優(yōu)化器卻選擇了全表掃描后面我會(huì)專門講到這個(gè)點(diǎn)。1.2 B樹索引結(jié)構(gòu)為什么適合數(shù)據(jù)庫(kù)MySQL 索引最常見的底層數(shù)據(jù)結(jié)構(gòu)是 B樹。為什么不是哈希表、二叉搜索樹或者普通 B 樹這個(gè)問題的答案幾乎決定了我們對(duì)索引使用的理解深度。哈希表雖然能在等值查詢時(shí)做到 O(1) 的查找速度但它天生不支持范圍查詢也無(wú)法做排序。SQL 里最常見的WHERE id 100、ORDER BY create_time這類操作哈希結(jié)構(gòu)基本幫不上忙。二叉搜索樹會(huì)隨著數(shù)據(jù)不斷插入而失去平衡最壞情況退化成鏈表查詢性能不可控。普通 B 樹雖然已經(jīng)比較矮胖但它的非葉子節(jié)點(diǎn)也存儲(chǔ)了實(shí)際數(shù)據(jù)這樣在范圍掃描時(shí)需要在不同層級(jí)之間反復(fù)回溯效率不夠流暢。B樹的設(shè)計(jì)恰恰解決了這些痛點(diǎn)只有葉子節(jié)點(diǎn)才存實(shí)際數(shù)據(jù)內(nèi)部節(jié)點(diǎn)只存索引鍵這樣每個(gè)節(jié)點(diǎn)能容納更多鍵值整棵樹可以做得很矮很寬。以 InnoDB 默認(rèn) 16KB 的頁(yè)大小為例如果一行索引鍵加上指針大約占幾十字節(jié)三層高度的 B樹往往就能容納幾千萬(wàn)條記錄。這意味著查詢一兩千萬(wàn)行的表通常只需要兩到三次磁盤 I/O就能定位到目標(biāo)數(shù)據(jù)所在的葉子頁(yè)。另一個(gè)關(guān)鍵設(shè)計(jì)是葉子節(jié)點(diǎn)之間通過指針連成有序鏈表。這讓范圍查詢變得非常流暢找到一個(gè)起始位置后沿著鏈表往后順序讀就行避免了跨層回溯。BETWEEN、ORDER BY、以及分頁(yè)查詢這類操作B樹都能給優(yōu)化器提供清晰的掃描路徑。理解了這層設(shè)計(jì)你就能明白為什么索引在排序和范圍查詢場(chǎng)景下如此重要。1.3 二級(jí)索引、回表與索引覆蓋除了主鍵對(duì)應(yīng)的聚簇索引普通字段上的索引都叫二級(jí)索引。二級(jí)索引的葉子節(jié)點(diǎn)里存的不再是完整數(shù)據(jù)行而是索引鍵和主鍵值。當(dāng)查詢條件命中二級(jí)索引但需要讀取的列不在索引里時(shí)MySQL 還要拿著主鍵值回到聚簇索引里再查一次這個(gè)過程叫回表。這里就到了一個(gè)非常關(guān)鍵的優(yōu)化點(diǎn)如果 SELECT 需要讀取的所有列都恰好包含在某個(gè)索引中InnoDB 可以直接從索引葉子節(jié)點(diǎn)上拿到數(shù)據(jù)不需要回表這就是覆蓋索引。我曾經(jīng)處理過一個(gè)列表接口原來(lái)查詢無(wú)論怎么調(diào)都慢最后把查詢列全部納入聯(lián)合索引執(zhí)行計(jì)劃的 Extra 字段里出現(xiàn) Using index 之后性能立刻上了一個(gè)臺(tái)階。理解回表和覆蓋索引對(duì)后續(xù)設(shè)計(jì)聯(lián)合索引至關(guān)重要。你設(shè)計(jì)索引時(shí)不僅要看 WHERE 條件用到了哪些列還要想清楚 SELECT 了哪些列。兩者同時(shí)納入視野才算一個(gè)完整的設(shè)計(jì)思路。尤其是那種高頻查詢的列表頁(yè)覆蓋索引往往是性價(jià)比最高的優(yōu)化手段它能同時(shí)減少 I/O 次數(shù)和回表帶來(lái)的隨機(jī)讀開銷。2. 索引設(shè)計(jì)實(shí)戰(zhàn)字段怎么選、聯(lián)合索引怎么排2.1 區(qū)分度是索引設(shè)計(jì)的先決條件很多人建索引的規(guī)則是“查詢條件里有什么字段就加什么”這個(gè)習(xí)慣其實(shí)非常危險(xiǎn)。一個(gè)字段是否適合建立索引最先要看的指標(biāo)是區(qū)分度也就是這一列有多少種不同的值。區(qū)分度的計(jì)算可以簡(jiǎn)單寫成COUNT(DISTINCT column) / COUNT(*)。這個(gè)比例越接近 1說明列的取值越分散索引篩選能力越強(qiáng)。性別、狀態(tài)、是否刪除這類只有幾個(gè)固定值的字段區(qū)分度非常低。如果單獨(dú)給它們建索引一次匹配可能還會(huì)命中幾百萬(wàn)行索引的意義就大打折扣了。我見過一個(gè)實(shí)際案例某張業(yè)務(wù)表有 800 萬(wàn)數(shù)據(jù)status 字段只有 5 種取值團(tuán)隊(duì)給 status 單獨(dú)建了個(gè)索引。結(jié)果查詢WHERE status 1時(shí)優(yōu)化器算了一下發(fā)現(xiàn)走索引要匹配 160 萬(wàn)行再回表還不如全表掃描快于是執(zhí)行計(jì)劃直接放棄了索引。這就是低區(qū)分度字段單獨(dú)建索引的典型困境。低區(qū)分度字段并非完全不能用但通常要放在聯(lián)合索引靠后的位置或者與其他高區(qū)分度字段配合使用。比如一條查詢里既能用 user_id 過濾到幾千行又能用 status 進(jìn)一步過濾到幾百行那么聯(lián)合索引 (user_id, status) 就很有價(jià)值單獨(dú)拿 status 建索引則基本屬于浪費(fèi)空間。判斷一個(gè)索引有沒有價(jià)值不是看語(yǔ)法上能不能建而是看它到底能把掃描范圍縮小到什么程度。2.2 聯(lián)合索引的最左前綴原則聯(lián)合索引的存儲(chǔ)規(guī)則決定了它和多個(gè)單列索引有本質(zhì)區(qū)別。以 (a, b, c) 聯(lián)合索引為例B樹葉子節(jié)點(diǎn)上的數(shù)據(jù)會(huì)先按 a 排序a 相同再按 b 排序b 相同再按 c 排序。理解這個(gè)順序就能理解為什么 MySQL 只認(rèn)最左前綴。所謂最左前綴就是查詢條件里必須從聯(lián)合索引的最左邊一列開始匹配索引才可能被用到。(a, b, c) 這個(gè)索引能服務(wù)于 (a)、(a, b)、(a, b, c) 三種查詢條件組合。如果查詢只針對(duì) b 或者 c 作為過濾條件這個(gè)聯(lián)合索引通常幫不上忙。有些開發(fā)者以為三個(gè)字段建了一個(gè)索引所有組合都能優(yōu)化這是個(gè)很常見的誤區(qū)。聯(lián)合索引的真正優(yōu)勢(shì)在于它讓等值條件下的多列過濾變成了一次索引范圍的精確掃描。舉個(gè)例子一個(gè)訂單表有聯(lián)合索引 (user_id, status)查詢WHERE user_id U10001 AND status 1時(shí)InnoDB 可以非常精確地在索引樹中定位到 user_id 為 U10001、status 為 1 的那一段葉子節(jié)點(diǎn)不需要一個(gè)一個(gè)回表看數(shù)據(jù)。還有一點(diǎn)容易被忽略范圍條件之后的列會(huì)停止匹配。如果查詢是WHERE a 1 AND b 10 AND c 2那么索引最多用到 a 和 bc 列沒法繼續(xù)參與索引定位只能等回表后再過濾。設(shè)計(jì)聯(lián)合索引時(shí)通常建議把等值條件的字段放在左邊范圍條件的字段放在右邊排序字段再進(jìn)一步考慮。這樣能讓索引發(fā)揮最大作用。2.3 單列索引和聯(lián)合索引該怎么取舍面試?yán)锍枴岸鄠€(gè)條件查詢?yōu)槭裁匆?lián)合索引而不是多個(gè)單列索引”實(shí)際工作里這個(gè)問題的答案非常真實(shí)多個(gè)單列索引對(duì)優(yōu)化器的選擇非常不友好。舊版本的 MySQL 雖然有 index merge 優(yōu)化但大多數(shù)情況下優(yōu)化器只會(huì)挑選其中一個(gè)區(qū)分度較高的索引去掃回表后再過濾其他條件。這意味著你建了三個(gè)單列索引但一次查詢大概率只能“吃掉”其中一個(gè)另外兩個(gè)除了浪費(fèi)磁盤空間和維護(hù)開銷幾乎沒有實(shí)際收益。而聯(lián)合索引因?yàn)榘讯鄠€(gè)條件按順序保存在一起可以一次掃描完成多條件篩選回表次數(shù)也會(huì)更少。當(dāng)然聯(lián)合索引也不是越多越好。聯(lián)合索引本身占空間且每次寫入、更新都要同步維護(hù)索引樹索引過多會(huì)顯著拖慢寫入性能。更麻煩的是聯(lián)合索引之間存在互相覆蓋的可能有了 (a, b) 索引再建 (a) 單列索引就比較冗余。我自己在做索引維護(hù)時(shí)會(huì)把那些“可以被其他索引替代的多余索引”清理掉這一步對(duì)高寫入場(chǎng)景的表來(lái)說收益非常明顯。3. 用 EXPLAIN 驗(yàn)證索引一次慢查詢優(yōu)化全過程3.1 讀懂 EXPLAIN 里的幾個(gè)關(guān)鍵字段索引到底有沒有生效不能靠猜要以 EXPLAIN 的執(zhí)行計(jì)劃為準(zhǔn)??磮?zhí)行計(jì)劃看多了之后我基本只盯幾個(gè)關(guān)鍵字段type、key、key_len、rows、Extra。type 字段表示訪問類型從好到差大致是 const、eq_ref、ref、range、index、ALL??吹?ALL 說明是全表掃描這是最危險(xiǎn)的狀態(tài)index 表示掃描整個(gè)索引樹雖然比全表掃描好一點(diǎn)但也不代表高效range 是索引范圍掃描常見于 BETWEEN、IN、大于小于這類條件ref 是等值匹配二級(jí)索引是比較理想的狀態(tài)const 是主鍵或唯一索引等值查詢性能最好。key_len 用來(lái)判斷聯(lián)合索引真正用到了幾列。拿聯(lián)合索引 (user_id, status, create_time) 來(lái)說如果執(zhí)行計(jì)劃里的 key_len 只覆蓋了前兩列的長(zhǎng)度說明第三條索引列沒有參與本次查詢的定位。計(jì)算 key_len 時(shí)要考慮字符集比如 utf8mb4 下一個(gè) varchar(32) 字段本身占 128 字節(jié)再加 2 字節(jié)長(zhǎng)度和可空標(biāo)識(shí)最終可能到 132 左右。不需要背精確公式但要知道這個(gè)值越大通常意味著索引利用得越充分。Extra 里的信息更需要重視。Using index 表示用到了覆蓋索引全程沒回表Using index condition 表示用上了索引下推ICP能在索引層過濾一部分?jǐn)?shù)據(jù)Using filesort 表示排序沒有走索引需要額外做文件排序數(shù)據(jù)量大時(shí)是性能黑洞Using temporary 則往往和 group by、去重等操作相關(guān)。執(zhí)行計(jì)劃里如果同時(shí)出現(xiàn) Using filesort 和 Using temporary基本可以斷定這條 SQL 還有很大的優(yōu)化空間。3.2 從 1.6 秒到 30 毫秒一個(gè)訂單分頁(yè)查詢的真實(shí)優(yōu)化過程我之前接手過一個(gè)后臺(tái)訂單查詢接口功能很簡(jiǎn)單根據(jù)用戶 ID 查訂單列表按創(chuàng)建時(shí)間倒序分頁(yè)返回。表數(shù)據(jù)量大約 700 萬(wàn)接口在高峰期經(jīng)常超時(shí)用戶端反饋“列表頁(yè)轉(zhuǎn)圈圈轉(zhuǎn)很久”。最初 SQL 長(zhǎng)這樣SELECT id, order_no, status, create_time FROM orders WHERE user_id U20240001 ORDER BY create_time DESC LIMIT 20;EXPLAIN 的結(jié)果讓我印象深刻type: ALL possible_keys: NULL key: NULL rows: 682340 Extra: Using where; Using filesorttype 是 ALL直接全表掃還帶 Using filesort。問題很明確表結(jié)構(gòu)里只有主鍵索引沒有任何二級(jí)索引能輔助 user_id 過濾和 create_time 排序。優(yōu)化器只能先把 68 萬(wàn)行全部掃出來(lái)再對(duì)結(jié)果做一次完整排序最后才取 20 條返回。優(yōu)化方案是加一個(gè)貼合查詢的聯(lián)合索引ALTER TABLE orders ADD INDEX idx_user_time (user_id, create_time);再跑一次 EXPLAIN結(jié)果變成type: ref possible_keys: idx_user_time key: idx_user_time key_len: 132 rows: 38 Extra: NULLrows 從 68 萬(wàn)直接降到幾十行文件排序也消失了。因?yàn)槁?lián)合索引的葉子節(jié)點(diǎn)已經(jīng)按照 user_id 和 create_time 排序?qū)τ谕粋€(gè)用戶的訂單InnoDB 可以直接從匹配范圍的尾部往前取 20 條不需要把匹配行全部撈出來(lái)再排一次。上線之后我又復(fù)測(cè)了幾輪單次查詢從原來(lái)的 1.6 秒左右穩(wěn)定在 30 毫秒內(nèi)接口 99 分位耗時(shí)也明顯下降。這里給一個(gè)實(shí)操上的建議加完索引之后不要只看 SELECT 是否變快還要觀察 INSERT、UPDATE 的耗時(shí)是否在可接受范圍內(nèi)。像這種訂單表寫入量本身就大加索引之前最好先在測(cè)試環(huán)境評(píng)估一下寫入鏈路的壓力變化。3.3 覆蓋索引帶來(lái)的下一步優(yōu)化同樣是上面這個(gè)查詢?nèi)绻霃氐妆苊饣乇砜梢园?SELECT 涉及的列也放進(jìn)索引。比如 order_no、status 是高頻 SELECT 字段把索引擴(kuò)展成 (user_id, create_time, order_no, status)Extra 里就會(huì)出現(xiàn) Using index整個(gè)過程不再訪問聚簇索引。不過這種方案需要權(quán)衡索引列變多存儲(chǔ)空間和維護(hù)成本都會(huì)增加單個(gè)索引頁(yè)能容納的鍵數(shù)量減少索引體積變大會(huì)反過來(lái)影響緩存命中率。實(shí)際操作中我通常先看接口的核心瓶頸在哪里。如果 30 毫秒已經(jīng)能滿足業(yè)務(wù)要求就沒必要為了追求 Using index 盲目加長(zhǎng)索引。性能優(yōu)化不是把執(zhí)行計(jì)劃做到最完美而是把耗時(shí)控制在業(yè)務(wù)能接受的范圍同時(shí)保證復(fù)雜度和維護(hù)成本可控。這里也想提醒一下不是所有 SELECT 的列都適合塞進(jìn)索引。像長(zhǎng)文本、大 JSON 這種字段放進(jìn)索引會(huì)直接把索引體積撐爆通常的做法是只在 SQL 里查詢必要字段或者把大字段拆到單獨(dú)的表里避免拖垮主表的索引效率。4. 索引失效的幾大場(chǎng)景與排查清單4.1 常見失效場(chǎng)景索引設(shè)計(jì)得再好只要 SQL 寫法不配合索引照樣不生效。下面這幾種情況是我在線上排查慢查詢時(shí)遇到最多的。第一類是函數(shù)包裹索引列。WHERE DATE(create_time) 2024-01-01這種寫法的意思是先對(duì) create_time 做函數(shù)運(yùn)算再比較結(jié)果索引樹上的值沒法直接匹配。類似問題還有WHERE YEAR(create_time) 2024。正確做法是改成范圍條件create_time 2024-01-01 AND create_time 2024-01-02這樣索引才能正常走 range 掃描。第二類是隱式類型轉(zhuǎn)換。比如 mobile 字段在表里是 varchar 類型查詢寫成WHERE mobile 13800000000MySQL 會(huì)把字符串列轉(zhuǎn)成數(shù)字去比較轉(zhuǎn)換過程導(dǎo)致索引列上發(fā)生函數(shù)操作索引隨之失效。這類問題排查起來(lái)特別隱蔽因?yàn)轭愋娃D(zhuǎn)換是數(shù)據(jù)庫(kù)內(nèi)部做的EXPLAIN 里不會(huì)給出很顯眼的提示只看到 type 變成 ALLrows 飆得很高。第三類是前導(dǎo)模糊查詢。WHERE name LIKE %abc因?yàn)闊o(wú)法確定前綴索引的排序和定位優(yōu)勢(shì)完全發(fā)揮不出來(lái)。反過來(lái)WHERE name LIKE abc%就可以走 range 范圍掃描。如果業(yè)務(wù)確實(shí)需要后綴模糊搜索可以考慮全文索引或者額外冗余一個(gè)反向字符串字段不要讓這種查詢硬打主表索引。第四類是對(duì)索引列做運(yùn)算。WHERE id 1 100這類寫法同樣會(huì)導(dǎo)致索引失效應(yīng)該改寫成WHERE id 99。MySQL 在優(yōu)化階段不會(huì)替你把等式兩邊的運(yùn)算消除掉索引列一旦參與運(yùn)算就無(wú)法按原始值去定位。還有一種比較容易被忽視的場(chǎng)景是 OR。如果 OR 條件中的某個(gè)列沒有可用索引優(yōu)化器往往直接放棄索引走全表掃描因?yàn)闊o(wú)法保證每一分支都能高效命中。遇到這種情況解決辦法是給所有 OR 列都加上索引或者把 SQL 改寫成 UNION把有索引和無(wú)索引的查詢拆開執(zhí)行讓優(yōu)化器可以選擇更優(yōu)的訪問路徑。4.2 大表在線加索引的實(shí)操經(jīng)驗(yàn)我們總說“直接執(zhí)行一條 ALTER TABLE 加索引就行”但真正要在幾百萬(wàn)行甚至更大的生產(chǎn)表上加索引事情沒那么簡(jiǎn)單。InnoDB 從 5.6 開始支持在線 DDL添加二級(jí)索引時(shí)允許并發(fā) DML但這并不代表沒有代價(jià)。大表加索引有幾個(gè)典型影響第一個(gè)是主庫(kù) DDL 期間仍然可能產(chǎn)生較大的磁盤 I/O 壓力因?yàn)橐亟ǘ?jí)索引樹第二個(gè)是如果通過主從復(fù)制讓從庫(kù)也執(zhí)行 DDL從庫(kù)延遲很可能會(huì)被拉高。我踩過這類坑曾經(jīng)在寫流量較大的表上直接跑 ALTER TABLE結(jié)果主庫(kù)會(huì)話堆積、從庫(kù)復(fù)制延遲飆升。后來(lái)總結(jié)了一條經(jīng)驗(yàn)生產(chǎn)環(huán)境大表加索引優(yōu)先放在業(yè)務(wù)低峰期執(zhí)行并提前確認(rèn)磁盤空間足夠同時(shí)觀察主從復(fù)制延遲必要的時(shí)候用并行復(fù)制參數(shù)來(lái)緩解。需要回退時(shí)也要小心。索引一旦創(chuàng)建刪除它同樣不是瞬間完成的事也會(huì)觸發(fā)索引頁(yè)的回收。所以給大表加索引之前最好是先在測(cè)試環(huán)境用完整數(shù)據(jù)量跑一遍 DDL記錄耗時(shí)再?zèng)Q定正式執(zhí)行的窗口。臨時(shí)表、備份表這些手段雖然老套但在關(guān)鍵時(shí)刻能兜底。4.3 索引統(tǒng)計(jì)信息與優(yōu)化器選錯(cuò)索引有時(shí)候明明有合適的索引執(zhí)行計(jì)劃卻選了別的索引甚至全表掃描這通常是優(yōu)化器基于統(tǒng)計(jì)信息做了“錯(cuò)誤”判斷。InnoDB 的統(tǒng)計(jì)信息是從采樣頁(yè)里估算出來(lái)的如果表的數(shù)據(jù)分布發(fā)生較大變化統(tǒng)計(jì)信息可能沒有及時(shí)更新。解決辦法不是直接上手 FORCE INDEX而是先刷新統(tǒng)計(jì)信息ANALYZE TABLE orders;。刷新之后優(yōu)化器通常會(huì)給出更合理的執(zhí)行計(jì)劃。如果刷新之后依然選錯(cuò)再考慮使用 FORCE INDEX 指定索引。不過 FORCE INDEX 屬于強(qiáng)制手段一旦數(shù)據(jù)分布再次變化手里這個(gè)索引可能不再是最優(yōu)解所以線上使用要非常克制并且要寫清楚注釋說明為什么強(qiáng)制指定。另外一個(gè)細(xì)節(jié)是優(yōu)化器對(duì)“預(yù)計(jì)掃描行數(shù)”和實(shí)際回表成本之間的權(quán)衡不一定準(zhǔn)確。在二級(jí)索引上MySQL 要逐行回表才能判斷是否滿足 WHERE 條件如果匹配的行數(shù)太多優(yōu)化器寧愿選擇全表掃描而不是走二級(jí)索引。這也能解釋為什么低區(qū)分度字段單獨(dú)建索引經(jīng)常不生效優(yōu)化器快速估算一下覺得走索引還不如全表掃。遇到這種情況要從根本上改變查詢條件或者重新設(shè)計(jì)聯(lián)合索引而不是跟優(yōu)化器較勁。5. 索引日常巡檢與維護(hù)工具速查5.1 如何查看現(xiàn)有索引與潛在冗余索引不是建完就一勞永逸的業(yè)務(wù)變化后原來(lái)的索引可能變成累贅。我比較習(xí)慣用SHOW INDEX FROM orders;查看表上的索引情況但這個(gè)輸出太原始實(shí)際維護(hù)時(shí)更多會(huì)對(duì)比列順序和查詢場(chǎng)景。目標(biāo)是找出冗余索引。判斷標(biāo)準(zhǔn)很簡(jiǎn)單如果一個(gè)索引的列是另一個(gè)聯(lián)合索引的最左前綴那它大概率可以被覆蓋。例如有一個(gè)聯(lián)合索引 (user_id, status)同時(shí)又存在 user_id 單列索引后者就是冗余的。這種冗余索引浪費(fèi)的是每次寫入時(shí)的維護(hù)開銷在高寫入場(chǎng)景下影響非常明顯。也可以直接查詢系統(tǒng)元數(shù)據(jù)比如 information_schema.STATISTICS 和 sys.schema_unused_indexes。后者能直接列出未被使用的索引對(duì)日常巡檢非常有幫助。遇到長(zhǎng)期不用的索引建議先在業(yè)務(wù)代碼里完全確認(rèn)沒有隱性使用再下線避免直接刪除后突然被打回。有趣的是一些團(tuán)隊(duì)喜歡把所有可能用到的索引都“一次性建好”美其名曰以防萬(wàn)一。這種做法恰恰是索引膨脹的根源。索引數(shù)量越多寫放大越嚴(yán)重查詢優(yōu)化器的選擇成本也越高。理想的策略是根據(jù)實(shí)際慢查詢和業(yè)務(wù) SQL 的分布來(lái)動(dòng)態(tài)維護(hù)而不是靠拍腦袋預(yù)防式建索引。設(shè)計(jì)索引永遠(yuǎn)服務(wù)核心查詢鏈路不為偶爾跑一次的后臺(tái)報(bào)表任務(wù)犧牲主鏈路性能。5.2 慢查詢?nèi)罩九c執(zhí)行計(jì)劃常態(tài)化檢查我把慢查詢?nèi)罩镜臋z查當(dāng)成了日常習(xí)慣。long_query_time設(shè)置 1 秒或更小慢日志里出現(xiàn)的每一條 SQL我都會(huì)用 EXPLAIN 重新看一眼。倒不是為了“批量性能優(yōu)化”而是通過這些執(zhí)行計(jì)劃來(lái)判斷未來(lái)數(shù)據(jù)量增長(zhǎng)后的風(fēng)險(xiǎn)。如果一個(gè) SQL 當(dāng)前雖然只查了 5 毫秒但 EXPLAIN 顯示 type 是 ALLrows 接近整表大小一旦數(shù)據(jù)翻倍它很可能就變成慢查詢。這種隱患是慢查詢優(yōu)化里最值得提前處理的類型。反過來(lái)如果 type 已經(jīng)是 refrows 也只有幾十行那基本可以放心很多短時(shí)間內(nèi)不太會(huì)出問題。在維護(hù)索引這件事上我還傾向于定期觀察索引頁(yè)的碎片情況。InnoDB 表經(jīng)過大量隨機(jī)刪除、更新后索引頁(yè)可能變得稀疏占用空間變大掃描效率下降。必要時(shí)可以通過 OPTIMIZE TABLE 重建表和索引但要注意這個(gè)操作在超大表上的耗時(shí)和資源消耗依舊要安排在低峰期執(zhí)行。一條 SQL 經(jīng)常無(wú)法用上索引的時(shí)候我更愿意退一步想想 SQL 邏輯本身是不是有優(yōu)化空間。比如把函數(shù)處理挪到應(yīng)用層完成、把 OR 改成 UNION、把分頁(yè)條件從 LIMIT 大偏移改成基于上一頁(yè)最大 ID 的游標(biāo)模式。這些做法往往比糾結(jié)單個(gè)索引更有效而且能從根源上降低數(shù)據(jù)庫(kù)的壓力。5.3 幾條實(shí)用經(jīng)驗(yàn)總結(jié)文章寫到這里把我這些年跟 MySQL 索引打交道的核心體會(huì)整理一下。不要憑感覺建索引先用區(qū)分度和核心查詢場(chǎng)景做判斷。區(qū)分度太低、查詢本身命中數(shù)據(jù)量過大的字段建了也是白建。寫完任何一條涉及多條件篩選的 SQL都養(yǎng)成跑一次 EXPLAIN 的習(xí)慣。執(zhí)行計(jì)劃里的 type、key_len、rows、Extra 四個(gè)字段就能回答 90% 的“為什么慢”問題。聯(lián)合索引的列順序要從“等值優(yōu)先、范圍其次、排序最后”這個(gè)思路去設(shè)計(jì)。這個(gè)順序排錯(cuò)了索引實(shí)際價(jià)值會(huì)大打折扣。線上改索引必須有回退方案且要在業(yè)務(wù)低峰期執(zhí)行。大表 DDL 不是一句 ALTER TABLE 就能草率搞定的。保持索引數(shù)量的克制。一個(gè)表的索引數(shù)量超過 5~6 個(gè)之后寫入性能的劣化往往會(huì)超過新增索引的查詢收益需要非常謹(jǐn)慎地評(píng)估。索引是手段讓查詢快速返回結(jié)果才是目的。這一點(diǎn)我一直寫在團(tuán)隊(duì)的開發(fā)規(guī)范里也是每次評(píng)審表結(jié)構(gòu)時(shí)最常強(qiáng)調(diào)的一句話。慢查詢排查的次數(shù)多了之后你會(huì)發(fā)現(xiàn)真正需要你記在腦子里的不是各種復(fù)雜的索引語(yǔ)法而是一個(gè)樸素的思考習(xí)慣這條 SQL 想要定位的數(shù)據(jù)到底被存在哪里、怎么才能最快找到它。最后再多說一句每次優(yōu)化的答案都藏在執(zhí)行計(jì)劃里。不需要背下所有語(yǔ)法細(xì)節(jié)但一定要能看懂 EXPLAIN 正在做什么。慢通常不是 MySQL 的問題而是我們對(duì)數(shù)據(jù)的訪問路徑還不夠理解。把這條路徑理清了索引設(shè)計(jì)自然會(huì)跟著清晰起來(lái)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲综合色男人网| 九九AV| 超碰无码五月97| 97 国产精品| 日韩AC| aaa亚无码专区| 国产热av| 欧美大战久久久伊人| 99久久9| 国产日韩精品人妻久久久久色欲网站 | 国产18精品亚洲精品| 国产精品高潮久久久无码| 午夜精品人妻二区三区| 亚洲黄色网址| 亚洲se电影| 久久99草| 97精品中文字幕| 91黑丝少妇| 色色婷| 日日操丁香五月天| 久久毛卡| 日韩人妻 中文字幕| 狠狠干91| 亚洲色图欧美一区二区不卡| 俞拍久久国应视频| 亚洲图片 欧美电影| 呻吟 欧美 日本 中出| 97超碰热线| 国产av高清版| 操香逼| 青青操在线亚洲视频观看欧美在线| 在线电影亚洲色图| 天天天天天天天天综合| 东方亚洲在线操逼天堂| 99999这里都精品| 久久日本熟妇熟色高清| 狠操91,com| 亚洲日韩少妇一道本视频| 国产二区三区粉嫩在线| 色综九九九一区| 国产一区二区久久| 国外91| 国产精品久久久久久久免牛肉蒲团 | 黄色AV影视| 婷婷五月天社区| 九九热精品| 午夜精品一区二区三区三上悠亚| 久久亚洲天天做| 97色爱| 久久国产精品,久久国产| 九九九久久久久| 亚洲欧美setu| 热久久无毒不卡| 亚洲天天精品| 97亚洲精品超碰| 香蕉99秘 一区精品蜜桃臀| 久久无码精品| 亚洲古典另类欧美在线| 丝袜内射| AV色五月天| 在线性黄高清免费视频| 女人爽到高潮潮喷18禁网站| 人妻熟女午夜精品在线| 欧美日韩精品国产91| 中文一区在线日| 最新9久久久9免费视频| 色妇综合网| 翔田千里Av在线| 免费观看国产小粉嫩喷水精品午| 99re视频在线观看这里只有精品| 亚洲自拍欧美色综合| 男人的天堂三级| 麻豆成人AV| 曰韩中文人妻视频| 开心激情站| 色女综合| 99在线观看视频在线高清| 国产91 丝袜在线播放00-百度| 日本成人在线不卡一区二区三区| 亚洲精品a人片在线观看视| 亚洲天堂,男人| 嗯嗯啊啊操死我| 麻豆黄站| 国产婷婷综合在线观看| 九九色色| 最新9久久久9免费视频| 2024黄色视频| 久久免费老司机精品| 91精品久久久久久久久久| 欧色网址| 亚洲午夜AV| 亚洲情色在线| 久久 精品| 欧美亚洲素人制服精品| 久久久久久波多野吉衣高潮| 久久精品久久久久久久| 狠狠综合网| 国产美女91视频| 91热热色| 天堂岛av| 久草电影网| 最新岛国大片| 亚洲一二三精品久久网| 亚洲精品人体| 伊人成人情色综合| 91色色网站| 欧美 亚洲 偷拍自拍| 天天享受天天看| 91中出| 午夜大香蕉| silk lablo在线观看一区二区| 99999精品| 亚洲人妻一区二区三区| 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 久久激情亚洲精品无码?V| 久jiu久神马影院| 色777999综合| 亚洲码专区| 日本一久是| 狼狼色丁香久久婷婷综合五月| 国产视频一区二区在线| 亚洲高清自拍| 大香蕉欧美伊| 国产视频一区二区三区在线免费观看| 69AV女优男人的天堂| 精品人妻一区二区三区四区不卡在| 亚洲超碰在线| 国产三级片在线观看| 水野优香在线观看| 日本506070| 超碰97精品在线| 久久青青草在线视频| 九九色精品| 91色欧美| 亚州精品丝袜-不卡成人免费| 国产一级舔足在线观看| 亚洲成人精品久久久| 久久91视频| 熟女AV一区| 乱伦av麻豆| 97超色| 手机在线人成免费视频| 999热日韩精品| 又黑又大又粗 | 久操在97| 婷婷伊人綜合中文字幕| 夜夜嗨视频| 中文字幕日韩精品一区二区三区| 色欲蜜臀AV| 色九九久九九| 国产夜夜艹| 高清国产成人无码| 国产三级片在线观看| 青青欧美在线| 熟女突然公开看18禁影片| 精品国产乱码久久久A| 久久久久久久人妻| 国产精品黄色三级av| 人妻美腿丝袜日韩| 青青青青草av在线观看| 91精品大奶人妻| 亚洲天堂男人天堂| 熟妇高潮二区三区| 精品一区二区三区最新| 五月天社区| A一区片| 后入式999| 亚洲熟妇乱女区二区三区| 久久男人精品| 富女玩鸭子一级毛片| 中文熟女五十乱码在线| 亚洲中文制服诱惑| 日日干夜夜干| 免费人成?大片在线播放| 深夜福利黄片| 加勒比中文av| 黄色av播放免不| 欧美天堂日韩三级国产传媒| 熟女突然公开看18禁影片 | 国产成人综合网| 国产精品日韩在线一区| 岛国黄片网站| 国产无码精品久久久久久| 五月天人妻综合| 亚洲一本色码中文字幕| 精品无码一区二区| 大香蕉人妻| 性在久久久久久| 亚洲无码国产探花在线观看| a啊啊啊啊啊啊啊啊一区二区| 嗯嗯啊啊好疼| 日本高清加勒比| 亚洲色图欧美色图制服丝袜| 亚洲人妻av| 日韩黄色一区二区三区| 操逼片国产| 欧美色www亚洲国产阿娇要播| 欧美91变态| 91N综合网| 亚洲精品国产专区在线观看| 国产亚洲性生活视频播放| 不卡在线观看视频| 无码免费在线观看黄色片| 国产拍偷精品网站| 国产v片在线免费观看| 久久久夜夜夜| 爱爱动态60秒| 亚洲日韩人妻中文字幕一区| 国产成久久综合片| 啪啪啪东京| 色翁荡息又大又硬又粗又爽| 99热在线观看| 中文字幕黑人大片| 啊…啊…操我用力操我 | 日韩有码回春沙龙第一页| 亚洲凸凹超碰成人| 欧美一区二区三区成人性生活| 美女的肌被草喷水视频| 亚洲天堂第一页| 乱久久久| 嗯嗯啊啊啊好爽| 亚洲 欧美 第一页 | 综合免费无码中文| 欧美精品久久久久久久久88| 无码国产精品午夜不卡(| 囯产操逼片| 中文字幕av乱伦| 国产精选三级在线观看| 九九热精品免费视频| 欧美狠狠弄| 天堂涩涩| 91欧美高清| 日本 欧美 亚中文字幕| 日韩一区二区熟女| 中韩中文字幕在线观看| 亚洲人成在线放东京热| 宅男影院久久久,99| 日本免费专区| 日韩女优中文字幕| 蜜臀aV午夜一区二区三区| chaopen97久久| 欧美欧美少妇| 亚洲欧洲日本精品中文a∨| 午夜视频好爽啊| 亚洲欧美日韩精品久久久一区二区| 立川理惠加勒比无码| 男人的天堂2010| 久久av色| 亚洲成成熟女人综合一区二区| 国产无吗在线播放| 国产又爽又黄| 射丝袜大香蕉| 综合久久97| 操逼操逼逼操操逼91 | 日韩欧无码一区二区三区免费不卡| 日韩免费av片高清无码| 日韩精品一区的| 精品少妇后入一区二区三区四区人妻巨乳 | 大香蕉宅男伊人| 久艹99| 欧美综合自拍| 欧美日韩成人| 久久亚州大香蕉| V A在线| 男男H黄动漫啪啪无遮挡网站| 桃色五月天| 九九九九一级| 国产拍偷精品网站| 天天日天天射天天干| 国产又粗又长视频| 亚洲人妻中文高清| 久久精品中文字幕女同| 成全动漫视频观看免费下载| 先锋精品av色鲁| 91网站18+| 国产成人一级av88| 美腿丝袜偷拍亚洲欧美| 肉动漫无遮挡h在线观看| 热九九精品| 日韩无码AB| 久久久久久久免费A片国产成a人亚洲精∨品无码| 91久久久久久久久18| 97 九色| 高潮毛片无遮挡高清免费| 大香蕉色十月| 九九九九9999| 五月激情天| 精品一区二区2| 国产精品制服丝袜清纯唯美| 婷婷五月天无码 | 爱av免费| 殴美色网| 色情成人五月天| 97国产|免费| 怡红院一区二区熟女人妻| 很很很很操| 操逼www.| 四虎影视永久在线观看精品免费网站 | 欧美强奸乱能| 欧美色道啊| 日韩乱伦视频| 蜜臀久久99精品久久久久电影| 超碰综合色| 日本精品免费一区二区三区四区| 午夜福利成人免费视频| www.亚洲黄色| 欧美精品双插| 亚洲Av诱惑| 黄片www.| 黑人综合网| 国产69精品久久久久99尤物| 午夜福利区| 国产1024在线播放| 免费看毛片操穴| 国产区在线| 狠狠色丁香| 九九九草| 99热在线观看| 国产9 9在线 | 亚洲| 国产怡红院| 亚洲天堂五月天国产| 日日干日日操五月天伦理视频| 三级日韩一区二区三区| 亚洲色香| 五月婷婷丁香| 欧美综合国产精品久久丁香| 女人18精品一区二区三区| 久99| 啪啪啪东京| 亚洲高清在线se| 欧美日韩国产在线| 欧 美 自 拍 偷 拍| 香蕉大久久久| 久久久久无码| 天天看,天天做| 啊啊啊免费视频| 中国黑人三级片网站上区| av网页一区二区三区| 四虎精品一区二区| 九9精品| 欧美日韩性感| 亚洲欧洲日韩国产自在线| 夜夜躁狠狠躁日日躁av| 久久超碰98| 五月天婷婷激情| 性爱乱伦视频免费| 亚洲少妇在线观看| 人妻美腿丝袜日韩| 久久精品72| 91大学精品激情戏| 91小视频| 这里只有精品视频在线观看麻豆| 国产一级高清免费观看| 夜夜爽夜夜摸夜夜操免费视频| 偷拍欧美综合| 95人妻爽爽人人做人人澡| 久久av一级av少妇av高潮| 天美传媒AV在线播放| 综合九九| 色网1| 有码免费观看| 久久亚洲不卡| 久久国产99精品72福利| 丁香五月久久| 亚洲欧洲国产综合av| 中国一级特黄大片护士| 亚洲精品一二牛牛| 亚洲九九九| 99在线观看视频在线高清| 伊人玖玖网| 国产乱弄免费在线视频。| 天天舔天天| 婷婷在线视频| 亚洲一区二区麻豆影院| 懂色综合久久久| 任你草| 色99视频| 日本 成 人 小说 电影 一区二区| 日韩成人大片在线观看| 婷婷五月天久久久| 超碰久热| 91男女啊啊啊| 三级片大波波| 少妇同性| 色网综合网| 国产久久男人天堂| 中精品一区二区三区| 色悠久久久av| 精品一区二区2| 成人草草视频| 欧美中文综合| 日本一区二区亚洲综合| 91色人妻| 国产九九九九九九九九| 91超级碰| 青青草九九九九九| 91爱做| 爱丝福利| 美女网站91| 性色AV网站| 国产女人与拘做受视频免费| 亚洲免费人妻在| 日韩成人免费电影| 97在线免费看| 怡红院成人av| 人人妻人人爽一区二区三区| 人人人摸人人| 欧美v亚洲v日韩v最新在线二区| 丝袜美腿制服人妻二区中文字幕| 色婷婷综合网站| 蜜桃成人1区2区3区| 欧洲免费一区二| 午夜福利区| 久热99999| 91色宗合| 欧美亚洲尤物久久| 久操大香蕉手机视频在线看 | 日韩AV一区二区三区四四| 黄色二级片网站| 330dv亚洲成年视频网| 久久精品女同亚洲女同13| 1024精品在线| 国产av强奸美女| 中文久久爆乳| 欧美激情超碰777| 久草久日| 先锋激情∨在线视频播放| 99久久网站| 97色97好| 日本欧美不卡| 国产专区第一页| 亚洲色天堂日韩中| 4虎在线视频| 大色综合| 日韩性爱播放| 青青草狠狠撸| 青青青国产手线观看视频2| 久精品无码av一区二免费国产在线观看 | 偷窥自拍亚洲天堂网爆| 性色国产东北露脸精品视频| 日本Suv精品一区二区| 午夜男人av| 高清不卡视频| 日韩精品啪啪啪| 约操熟妇| 亚洲精品国产精品乱码不卡| 久久的免费性爱视频| 欧美在线观看综合国产| 亚洲限制级| 91色色网站| 色综合色| 少妇大屁屁| 一级久久久久久久久久久| 欧美老熟另类| 91精品无码久久久久久久| 久热99| 午夜福利一区二区三区四区五区色婷婷| 呦呦影院| 熟啊v色欧美热| 97色碰| 黄色AV影视| 亚洲国产97在线精品一区| 欧美人妻精品一区二区| 久久综合久色欧美综合狠狠| 性爱Av免费| 双插在线| 香蕉热人人精品| 精品一久久久| 美女写真| 久久国产精品视频| 欧美日韩中文亚洲v在线综合| 99久在线精品99re8a| 成人免费看吃奶视频网站| 亚洲狼狼干综合1| a亚洲欧美色欲| 日韩熟女精品无码专区一区二区| 思思久热在线精品66| 嗯嗯嗯好爽| 欧美日韩1234| 大香蕉国产中文自拍| 日韩av电影成人在线| 一区二区精品更新提醒| 国产亚洲日韩在线三区黑人| 中文字幕乱偷人妻久久艾草网| 日韩探花精品在线视频| 我爱操| 激情五月综合网| 91美女小视频| 99精品伊人| 看一级特黄a大一片| 99精品无码| 91碰碰| a亚洲欧美色欲| 神马影院午夜福利久久久| 天天精品| 成人羞羞视频国产| 97热视频在线观看| 91粉芽高清在线一区二区| 超碰成人人人爽人人爽| 亚洲青青草| 91chinese在线| 国产强奸无码乱伦| 国产熟女高潮一区二区三区| 99热免费| 老熟妇一区二区三区…| 国产丁香精品露脸视频 | 国产精品爆乳懂色蜜乳| 亚欧美综合网。| www.色五月| 久久免费99精品久久久久久| 蜜桃午夜视频一区二区| 欧美狠狠弄| 色香色欲天天综合网天天来吧| 91精品国产综合久久久蜜臀酒店| 久久 亚洲 日韩 人妻| 黑人精品成人一区二区三区| 免费观看成人www精品视频| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 97伪v| 综合网欧美在线| 国产精品亚洲天堂网址| 欧美色亚洲| 美女91av| 激情终合网| 2020视频1区2区3区| 天天色,天天干,天天干| 精品欧美老熟女一二区| 久久伊人东京热| 日本久久综合| 中文字幕视频在线观看一区二区| 爱我干综合| 中文字幕国产| 精品久久久av无码免费| 亚洲a色| 欧美九一精品久久久熟妇| 黄色十八禁网站| 激激五月| 夜夜肏2021| 无套内射性感少妇视频| 少妇高潮对白在线观看| 亚洲第一免费视频| 内射老妇BBWX0C0CK| 91网站18| 亚洲国产成人综合碰碰三级经典| 少妇的嫩逼图片| 少妇精品久久久八区九区| 美女AV一区二区| 色第一页| ai欧美亚洲小说| 久久久久9999妇女| 九九九九日本 | 日熟女| 玖玖爱在线视频免费观看| 亚洲久久久久| 久久久精品网站| 少妇综合网| 精品福利| 日本成人免费一区二区三区| 日本爽爽爽爽爽爽免费视频| 人妻二区| 国产精品亚洲天堂网址| 亚洲AV无码AV吞精久久久久| 成人亚欧免费视频| 亚洲乱熟女一区二区三区大香蕉| 曰韩成人免费视频| 99热自拍| 日韩人妻操B| 日本不卡码黄色 | 精品人妻av在线播放| 91高清无码下载| 岛园激情| 91neishe| 1二区9| 97天天插| 91bbbbbb| 天天懆天天日| 92人人操人人| 激情婷婷丁香| 色综合潮| 91精品国产长腿丝袜美女| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 无遮挡h肉动漫在线观看| 韩国一级做A片免费的| 久久色情| 97玖玖超碰| 青青草女人天天干| 嗯嗯啊好爽| 一本精品日本在线视频精品| 午夜男女爽爽爽在线视频| 亚洲天堂区| 欧美日韩精品国产91| 青青草国产一区二区三区| 丝袜 中出 制服 人妻 美腿 中文字幕| 欧美亚洲激情| 九九久久一区二区伦理| 成人资源中文字幕在线观看天天| 亚洲综合小视频小说在线观看 | 国产亚洲精品美女久久久m| 午夜男人一级A片7777| 很黄很污的免费网站| 日本一级不卡一二区| 欧美天天性| 亚洲日韩美女中文字幕乱| 玖色AV| 97精品97久久| 26UUU欧美日本| 色小视频蜜乳| 黑人与人妻| 久久大黄片| 欧美黄色大香蕉一区二区| 歐美一級亂黃99在綫精品| 色网亚洲人| 国产精品人人爽人人做可爱福利| 大香樵伊人网| 久艹视频在线| 色色香蕉| 好好的日:com久久九九| 97视频在线播放| 不卡啪啪视频| 日日日色色色色色| 欧美激情性久久久久久| 奸色色 男人天堂 天天射| 97在线观看免费| 综合久久久久久久综合网| 人妻日日夜夜精品| 天天拍夜夜| 久久婷婷亚洲| 成人AV在线网站| 欧美性爱三区二区| 欧美青青视频| 日韩性爱毛片操骚逼| 国产13区| 立川理惠被中出无码| 屌逼传媒| 国产精品农村妇女| 九月丁香婷婷| 精产品久久| 柠檬AV导航| 亚洲少妇自拍中文字幕懂色| 成年人一级黄色毛片大全在线观看| 精品一区二区三区四区女| 亚洲一区日韩精品中文字幕 | 91少妇人妻| 天天日天天舔| 火箭成精品视频884必出精品| 亚洲高清无码免费观看视频| 日本久久久久久久久久| 国产乱伦一二三区| 色婷婷日韩精品一区二区三区| 亚洲午夜福利在线影院| 久久久久深夜无码| 久久美女福利是上海美女| 精品制服美女中文一区二区三区| 男男H黄动漫啪啪无遮挡网站| 热久久无毒不卡| 色爱三区| 色色97爱| 欧美性爱97超碰| 日韩激情电影中文字幕| 大香蕉色网| 隔壁邻居波多野结衣中文字幕| 日韩丝袜高跟制服在线观看| 欧美视频一区二区在线| 久久激情四射婷婷丁香五月天| 日本中文字幕在线视频| 丰满人妻一区二区三区四区| 理论久久婷婷网 8| 伊人久久综合影院精品久久久| 自拍二页| 亚洲精品精品一区二区| 久久高潮妇女视频| 久久嫩草国产成人一区| 日本免费中文字幕在线| 欧美激情一| 成人欧美一区二区三区黑人一| 免费视频一二三区| 日本999精品视频| 日韩欧美国产一区二区三区四区| 精品少妇一区二区三区| 欧美熟妇视频| 91成人在线免费视频| 欧美亚洲特P| 超碰 另类 欧美| 欧美日韩国产三级黄色| 色色97爱| 久久夜嗨| 激情小说五月天| 亚洲婷婷综合网| 很狠操| 97精品国产97久久久久久免费| 欧美一级黄片视频在线| 精品人妻久久久久一区二区三区| 久久久999网站| 91三级理论片播放器| 久久亚洲AV无码专区国产精品| 久肏视频字幕| 精彩国产视频播放1区2区| 综合欧美日韩在线观看| 欧美精品三级黄片| 亚洲天堂一二| 91爱做| 大鸡巴久久久| 婷婷五月天色色| 欧美探花网| 日韩情色一区二区| 成人久久久精品| 无码一区二区三区四区五区六区七区八区九区十区视频 | 精品视频日日夜夜| 懂色AV蜜臀无码精品APP| 日本精品五区| 色网亚洲人| 97操在线| 国产女同性恋视频| 久久久噜噜噜久久久| 日本日逼视频网| 欧美另类精品xxxx| 都市久久精品激情亚洲| 精品午夜福利| 超碰人人干天天射| 色偷偷综合91久久噜噜| 欧色性第一页| 久久熟女人| 插日本熟女视频| 中文字幕三四区| 理论久久婷婷网8| 中文字幕午夜精品久久久| 97er欧美性| 亚洲少妇诱惑| 思思热在线| 久久曰曰| 99热在线播放| 色婷婷在线视频| 婷婷在线视频| 91操碰| 国产精品色色| 五月天婷婷影院| 欧美一级三级| 97爱爱爱综合| 熟妇高潮一区二区免费视频| 97干日韩| 特级大荫道BBwBBwBBW| 久久这里都是精品| 四虎永久在线精品免费网址 | 精品久久久久久AV无码| 俺去啦俺来也久久综合| 日本人妻伦在线中文字幕| 亚洲精品一区二区日本| 极品欧美一区二区三区| 欧美一区二区三区互相| 欧美日韩黄片精品在线| 欧美国产精品| 国产亚州高清国产拍精| 性爱乱伦一区| 婷婷五月在线视频| 麻豆国产原创AV色哟哟| 少妇69中文| 色偷综合| 九九九九亚洲| 国产强奸乱伦第1页| 69XX一中文字幕人妻91| 久久久久久人妻一区精品色欧美| 欧美精品xxxwww| 一区二区三区精品视频| a网站免费观看| 欧美日日夜夜| 亚洲日韩XXX| 激情小说激情视频| 国产在线综合网| 嗯啊抽插大香蕉网页| 亚洲一区日韩| 啊好爽受不了无码| 蜜桃臀一区二区aV| 香蕉视频欧美一卡二卡| 素人一区二区三区日韩| 最新国产亚洲精品精品国产亚洲综合| 激情久久久| 九九英色视频| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 另类天堂| 99re8免费高清在线| 国产精品69久久久久孕妇欧美| 啊啊啊啊免费视频| 青青草在线视频欧美| yazhouzaixian| 亚洲欧美另类少妇精品| 超碰 国产熟女精品一区| 老熟乱一区二区三区四区| 日韩成人无码| 91女优在线观看| 台湾佬大香蕉| 亚洲A曰本VA欧美VA视频| 92人人操人人| 不卡码视频| 干美女人妻| 人人操人人摸avav| 色五月亚洲| 九九热精彩视频| 69天堂| 国产呦精品一区二区三区下载| 天天操天天射青青草| 欧美在线第五页| 日本αv| 天天综合色| 精品一区二区久久| 日本精品网站在线中文| 国产剧情一区在线观看| 国内成人圈中文字幕无码视频 | 色香色欲天天综合网天天来吧 | 日日操丁香五月天| 夜夜狼人妻| 91亚洲情色| 美女黄频a美女大全免费皮| 综合网久久| 国产精品九九九| 婷婷五月天丁香| 亚洲午夜蜜臀| 亚洲乱码国产乱码精网站| 午夜成人福利影视| 97香蕉网| 麻豆亚洲Av成人无码一区精品| 91中出在线| 爱av免费| 婷婷九月国产| 久草视频在线视频在线视频在线观看 | 精品女同一区| 亚洲成人福利电影免费 | 免费超碰97在线观看| 欧美 亚洲 大香| 91色交| 久久熟女人| 欧美色亚洲| 欧美78p| 啊啊啊久久| 亚洲人妻一区二区三区| 国产精品伦理| 综合五月天| 五十路三区在线| 精品国产乱码久久久久久久久1 | 99热婷婷| 欧美在线天堂| 九九毛片这里只有精品| 亚洲成a人v欧美综合天堂下载| 你操综合| 欧美视频一| 日韩99神马视频播放| 先锋影音av先锋一区| 日韩精品9999| 久久一区二区高清免费| 久久成人午夜狠狠| 久久综合激情| 欧美日韩亚洲天堂| 中文字幕国产精品1区| 中文字幕丰满人妻日本| 一区二区三区四区五区高清无码永久视频| 国产v亚洲v日韩v欧美v片另类| 人人妻人人操人人乐| 欧美日韩午夜精品一区二区三区| 国产肏屁眼视频| 浪人综合网| 日本大香蕉综合网红本杳社区| 久久精品国产精品亚洲艾通辽熟妇| 天久久久噜噜噜久久国产精品爽爽 | 奸色色 男人天堂 天天射| 91精品人妻偷情| 青青草久草AV| 亚洲婷婷五月天| 强奸乱伦AV一天堂网| 97网址97| 精品区9| 啪啪视频亚洲第一 | 日韩精品区二区三区不卡| 精品国产三级av韩国在线| 男人把坤坤插入女人的下体| 亚洲欧美激情在线视频| 大JI巴好深好爽又大又粗视频| 国精综合一二三区影视| 欧美一级黄片免费播放| 91成人18| 97天天在线| 91老司机在线视频免费观看| 奇米狠999| 亚洲在线91| 330dv亚洲成年视频网| 激情综合五月| 26uuu性| 免费观看一区| 久热99999| 夜夜嗨AV蜜臀av| 91人妻Pr| 隔壁邻居波多野结衣中文字幕| 99国产女人| 欧美亚洲高清不卡| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 老司机射| www.99色| 91骚熟女| 9美女超碰在线免费观看| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 亚洲黄色视频在线观看视频| 青娱乐 青青青操 日逼| 欧美A√综合网| 日韩精品区二区三区不卡| 夜夜影视四色| 亚洲一区日韩精品| 九久精品| AV中文字幕三四五| 久久久免费懂色| wwe 天天干.com| 欧美熟爽综合| 九九综合久久| 亚洲 欧美日韩 另类| 成人无码电影在线观看网| 亚洲欧美另类小说| 九九九九亚洲| 97在线观看免费| 日本黄页视频在线观看| www.高清无码诱惑一区.com | 97日韩欧美亚洲| 麻豆天美在线喷水AV| 日夜久久久九九九久| 91在线美女| 91狠婷| 9/A片 | 97视频在线看| 少妇淫妇久久久久久久| 色偷偷2020免费视频播放| 99re在线视频| 国产吹潮女在线观看| 国产亚洲日本| 欧美韩日精品资源| 香蕉免费一区二区三区不读 | 激情黄色片在线观看| 中文字幕国产在线天堂| 人人操欧美风骚| 国产91精品在线免费| 九九九九9999| 2024黄色视频| 国产强奸AV在线| 少妇熟女1区2区3区| 秋霞一集毛片观看| 久久av无码| 中文精品一区二去| 四虎影视永久在线免费| 日本精品无码三级网站| 国产 亚洲 丝袜 制服| 人妻中文字幕日韩电影| 欧美亚洲日本激情在线| 国内三级自拍小视频在线观看 | 国产97综合| 欧美综合综合| 久久久久国产精品久久久| 九七超碰| 18啪啪手机免费性爱| 天天看天天在线精品| 亚洲色图殴美色图激情乱伦| 制服乱伦| 人妻天天操天天爽视频免费| 久久夜色一区二区| 青青伊人久久| 中文字幕色AV| 91美女在线观看| 国产精品ⅴ无码大片在线看.| av天堂精品久久| 亚洲激情在线一区二区| 久久人妻视频网| 欧美亚洲20p| 国模久久在线| 97超碰久久| 国产精品嫩草影院免费| 久久精品99| 自拍丝袜美腿人妻| 色综合1991| 超碰午夜| 久久精品店| 夜夜嗨一区二区| 欧美性爱一区二区三区四区| 亚洲男人天堂视频| 国产色产精品在线观看| 国产91啪| 91neishe| 色哟哟av网址| 久久精品人妻一区| 手机在线人成免费视频| 嗯嗯啊中文字幕| 东京热熟女亚洲视频网站| 亚洲欧美洲综合| 免费公开人人操| 鲁鲁色综合网| 亚洲熟妇综合久久久久久| 国产精品诱惑| 婷婷激情五月天小说网| 欧洲天天在线| 208天天久久九九九| 日韩成人性日韩成人性爱视频在线免费观看| 国产熟女完整版中字| 91N欧美| 亚洲激情深爱文学小说网站| 乱伦日本中文自拍| 日本色婷婷| 日韩精品大香蕉伊人在线| 久久九色| 久久激情五月| 少妇内射视频| 性爱乱伦视频免费| 四虎AV无码| 91黄站| 911粉嫩人妻| 99只有精品| 人妻色偷色噜| 国产丝袜视频| 日产精品久久久一区二区| 亚欧视频在线| 97日视频| 国产精品直播在线观看直播| 好吊妞转入那个网| 九九九只有精品| 亚洲色图日韩精品| 伊人伊人LD| 一个人免费视频观看在线WWW| 99热| 妇女一区二区三区| 婷婷五月综合在线| 97精品一区| 久久久久国产精品喷潮免费观看臀 | 久一区久久蜜桃| 色播综合| 亚洲资源吧| 日本在线视频导航| 97欧美久久久久久久| 2019天天干天天操| www.男人天堂| 91精品国产日韩欧美综合| 自拍视频大全亚洲专媒视频/一区二区三区 | 色香伊人| 国产操逼逼网| 亚洲精品 欧美精品| 国产一区在线观看无码AV| 97超碰亚洲| 黄色AAAAAAAAAAA大片| 久久久男人的天堂| 岛国AB视频| 男人的天堂日韩| 亚洲一区二区性爱电影| 91天天美女| 久久五月综合| 亚洲欧美色图片| 日韩中字av一区| 日韩一区二区精彩视频| 成人在线视频一区| 秋霞无码av鲁丝片一区| 九九亚洲色在线观看| 亚欧国产无码精品在线| 新91视频.cmp| 熟女人妻av在线资源,黄色的资源| 亚洲色宗合| 亚洲情色一区三区| 午夜福利av电影在线| 黄色一区三区| 大香蕉九九| 97国产精品视频| 国厂麻豆77q4| 在线国产一区二区av| 黄色成年| 99国产在线绯色一区| 翔田千里AⅤHD无码| 色香伊人| 久久久人妻| 欧美18 在线观看| 色香91| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 日韩乱伦AⅤ| 久草色在线观看| 精品少妇后入一区二区三区四区人妻巨乳 | 国产9 9在线 | 亚洲| 亚州大图综合色图| 性爱动态120秒| 天天操天天射天天日| AV中文字幕三四五| 开心六月色| 国产精品国产拍高清AV| 久久国产成人精品国产成人亚洲| 色网在线| 国内91熟女人妻丝袜天天精品视频在线 | 最新av中文字幕高清| 呻吟 欧美 日本 中出| 大胆91| 亚洲97久久精品亚洲| 激情欧美97| 日韩操呦呦影院在线观看| 丁香五月天视频| 91在线超高颜值国产| 青青在线视频免费| 久久国产精品熟女人妻| 婷婷五月天AV| 亚洲va有码在线天堂| 射久久| 人妻精品一区一区三区蜜桃91| 北条麻妃99精品青青久久| 成人三级片无码| 7777奇米影视久久| 91 丝袜在线播放| 久久机热| 午夜福利在线视频1000| 欧美一级三级| 五月综合婷婷久久网站| 国产多人在线观看视频| 婷婷五月天激情四射| 中文一区二区| 97精品久久久久久久| 嗯啊不要啊在线 | 真实高潮91| 五月婷婷六月丁香| 午夜精品久久久久久久99蜜桃一| 亚洲97成人在线观看| 久久久久久久| 欧美桃色网| 加勒比综合a∨| 欧美视频激情久久久久久| 欧美三级一级| 蜜臀久久99精品久久久老,,| 亚洲国产成人高清在线| h无码动漫在线观看| 精品九九国产无码| 亚洲国产精品成人综合| 91亚洲高清| 国产精品乱码久久久久| 0755午夜福利视频| 超碰综合97在线| 99国产精品自在自在| 蘋果手機免費看成人Av| 五月婷婷hd| 一区二区精品更新提醒| 好吊色青靑草| PMv在线观看| 欧美亚洲综合高清在线| 久草看看看| 激情婷婷黑人91| 男人天堂无码| 国产精品69久久久久孕妇欧美| 久久久久9| 97超碰人操| 免费97视频| 91劲爆| 色九九九九九九| 亚洲性综合11| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 九九九久久久久| 加勒比日本在线| 麻豆一区在线| 欧美色图人妻| 日夜尻逼网| 精品国产乱码久久久| 久久久久久久| 免费a v| 五月天久久综合网| 在线国产福利网址导航| 亚洲中文日韩精品| 久热9| 少妇国产不卡| 人妻熟女一区二区三区在线|