精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試官:為什么 MySQL 索引要用 B+ 樹?

數據庫
今天,我們就從一個經典的面試問題“MySQL為什么選擇B+樹?”切入,層層深入,不僅講解索引的“是什么”,更聚焦于“為什么”和“怎么做”。

數據庫是后端工程師繞不開的核心技術,而索引,則是這核心中的核心。在日常工作中,我們每天都在和索引打交道,索引問題也是高級工程師面試中,面試官最喜歡考察的地方。

很多開發者在面試中談及索引時,往往只能給出一些零散、機械的記憶性答案,比如“B+樹查詢快”、“索引能提速”。這樣的回答很難在面試官心中留下深刻印象。真正體現一個工程師技術深度的,是對索引背后設計原理的系統性理解,以及在復雜場景下進行選型和優化的能力。

今天,我們就從一個經典的面試問題“MySQL為什么選擇B+樹?”切入,層層深入,不僅講解索引的“是什么”,更聚焦于“為什么”和“怎么做”。希望通過本文,你能構建起一個體系化的索引知識框架,讓你在未來的面試和工作中,都能游刃有余。

一、B+樹的核心結構

B+樹是一種精巧的多叉樹結構。對于一棵m階的B+樹,它遵循以下規則:

  • 樹中的每個節點最多可以擁有m個子節點。
  • 除了根節點,其他每個節點至少有 ?m/2? 個子節點。根節點若非葉子,則至少有兩個子節點。
  • 擁有k個子節點的非葉子節點,必定包含k個關鍵字(可以理解為索引列的值)。

定義可能有些枯燥,記不住沒關系,但下面這兩個核心特征,你必須牢牢記住:

  • 數據只存在于葉子節點:所有非葉子節點(可以看作是“目錄頁”)僅存儲關鍵字信息,用于指引查找方向。真正的數據記錄,全部存放在樹最底層的葉子節點中。
  • 葉子節點構成有序鏈表:葉子節點之間通過雙向指針(在InnoDB中)相互連接,形成一個天然的、支持雙向遍歷的有序序列。

二、B+樹做索引的三大優勢

正是基于上述特性,B+樹為數據庫查詢帶來了三個優勢,每個優勢都給性能帶來了極大的提升。

1. 高效的磁盤I/O

數據庫的數據和索引通常存儲在磁盤上,而磁盤I/O的耗時是內存操作的上萬倍,是系統性能的主要瓶頸。查詢過程的本質,就是不斷地進行磁盤I/O來讀取數據頁(Page,InnoDB默認為16KB)。

B+樹的“多路”特性,意味著每個節點可以擁有成百上千個子節點(階數m非常大)。這使得整棵樹的結構呈現出“矮而胖”的形態,高度極低。

我們來做一個簡單的估算:假設主鍵是BIGINT類型(8字節),指針大小在InnoDB中是6字節,那么一個16KB的數據頁作為非葉子節點,大概可以存放 16KB / (8B + 6B) ≈ 1170 個(關鍵字+指針)組合。如果樹的高度為3,那么它可以索引的數據量大約是 1170 * 1170 * (葉子節點可容納的行數)。假設一行數據為1KB,葉子節點能放16行,那么總共可以索引 1170 * 1170 * 16 ≈ 2190萬 條數據。查詢這2000多萬條數據中的任意一條,最多只需要3次磁盤I/O!相比之下,傳統的二叉樹,在存儲同樣量級數據時,會形成一個“高瘦”的結構,查詢深度巨大,將導致災難性的磁盤I/O次數。

下圖是數量級與樹高的一個關系圖,可以看出B+樹對比二叉樹性能優勢非常明顯:

2. 范圍查詢效率高

在業務場景中,范圍查詢極其普遍,例如“查詢某個用戶在九月份的所有訂單”。B+樹的葉子節點通過鏈表串聯的設計,簡直是為范圍查詢量身定做的。

當執行一個范圍查詢,如 SELECT * FROM orders WHERE order_id BETWEEN 120 AND 230; 時,數據庫引擎會進行如下操作:

  • 通過B+樹從根節點開始,快速定位到order_id = 120所在的葉子節點。
  • 讀取該節點的數據。
  • 然后,無需再從根節點開始查找121、122..,而是直接通過葉子節點的鏈表指針,順序向后遍歷,直到找到order_id > 230的記錄為止。

這個查找過程非常高效,找到第一個節點數據后,由于葉子結點的數據都是排好序的,直接找到第二個臨界數據,去中間的數據就完事了。

3. 輕量的非葉子節點

由于非葉子節點不存儲真實數據,只存儲關鍵字和指針,使得它們占用的空間非常小。這意味著,在系統內存允許的情況下,我們通常可以將索引樹的非葉子節點(也就是那幾層“目錄索引”)完整地加載到內存中,并長期駐留。

當一個查詢請求到來時,大部分的索引尋址過程(從根節點到葉子節點的上層路徑)都在飛快的內存中完成,只有最后需要讀取真實數據時,才需要進行那一次或幾次不可避免的磁盤I/O來訪問葉子節點。這進一步將磁盤I/O的次數壓縮到了極致。

B+樹的這三大優勢,環環相扣,共同保證里了B+樹查詢方面的高性能。

三、常見索引分類

理解了B+樹的底層原理,我們再把視野拉回應用層,看看在MySQL中,索引是如何基于B+樹衍生出五花八門的類型的,以及它們在實踐中是如何影響我們的系統性能的。

1. 聚簇索引與非聚簇索引

這是索引分類中最重要的一個維度,也是接下來我們將重點分析的一種索引分類,因為它直接關系到數據的物理存儲方式。

  • 聚簇索引(Clustered Index):其葉子節點直接存儲了完整的數據行。在InnoDB中,數據表本身就是按主鍵組織的一棵B+樹,這棵樹就是聚簇索引。因此,一張表只能有一個聚簇索引。
  • 非聚簇索引(Non-Clustered Index):也常被稱為二級索引或輔助索引。它的葉子節點存儲的不是完整數據行,而是對應行的主鍵值。除了主鍵索引外的其他索引,如普通索引、唯一索引等,都是非聚簇索引。

(1) 回表查詢

上面說了主要的索引分類,就不得不提一個非聚簇索引的性能問題了。那就是回表查詢。當我們使用非聚簇索引進行查詢時,如果查詢所需的數據列不完全包含在該索引中,數據庫就會經歷一個兩步走的過程:

  • 索引查找:首先在非聚簇索引(某個非主鍵字段建立的索引樹)樹上查找到滿足條件的記錄,并從中獲取到主鍵值。
  • 主鍵查找(回表):再用這個獲取到的主鍵值,去聚簇索引樹(按主鍵id排序的樹)上進行一次查找,最終定位到完整的行數據。

例如,我們有一個用戶表employees,主鍵是id,在employee_no(員工編號)上建了一個非聚簇索引。當我們執行 SELECT * FROM employees WHERE employee_no = '86'; 時,就需要先通過employee_no索引找到主鍵id(比如是50),然后再根據id=50去聚簇索引中找到完整的員工信息。這個拿著主鍵再去查一次的過程,就是“回表”。它至少會增加一次額外的樹查找和磁盤I/O,在高并發場景下,性能損耗也是不小的

(2) 覆蓋索引

如何避免回表操作帶來的性能損耗呢?答案就是 覆蓋索引。覆蓋索引并不是一種獨立的索引類型,而是指在一個查詢中,索引本身已經覆蓋了所有需要查詢的字段,因此數據庫引擎無需再回到主表(聚簇索引)去獲取數據的一種狀態。

還是上面的例子,如果我們為employees表建立一個 (employee_no, name) 的聯合索引。現在,我們的查詢變為 SELECT employee_no, name FROM employees WHERE employee_no = '86';。此時,查詢所需的所有列(employee_no 和 name)的值,都已存在于這個聯合索引的葉子節點上。數據庫可以直接從該索引的葉子節點提取數據并返回,完全避免了回表操作,性能大幅提升。

這給我們帶來了兩個極其重要的SQL優化啟示:

  • 精準查詢:杜絕SELECT *,只查詢你真正需要的列,這是利用覆蓋索引的第一步。
  • 為高頻查詢場景設計合適的覆蓋索引:分析業務中最核心的查詢,為其建立合適的聯合索引以實現覆蓋。

(3) 最左前綴匹配原則

在上面我們提到用索引覆蓋可以有效解決非聚簇索引的回表問題,這里我們還必須了解組合索引的生效規則,否則即使我們在一些字段上建立了組合索引,最終也不會生效。

對于組合索引,MySQL查詢優化器會嚴格遵循“最左前綴匹配”原則。這是組合索引最重要的,也是最容易被誤解的規則。

假設我們有一個訂單表orders,并建立了一個聯合索引 idx_reg_stat_date ON orders (region, status, order_date)。這個索引的B+樹在物理上是這樣排序的:首先按region排序,在region相同的情況下再按status排序,在前兩者都相同的情況下最后按order_date排序。

這種結構決定了索引的查找方式,必須從索引的最左邊的列開始,并且不能跳過中間的列。

  • WHERE region = '華東' AND status = '已支付':能使用索引。優化器會用'華東'定位到特定范圍,再在這個范圍內用'已支付'繼續定位。
  • WHERE region = '華東':能使用索引。只使用了索引的第一個列。
  • WHERE status = '已支付' AND order_date = '2025-09-07':無法使用索引。因為查詢條件跳過了最左邊的region列,索引無法定位。
  • WHERE region = '華東' AND order_date = '2025-09-07':只能使用索引的region部分。當region確定后,由于status未知,order_date是無序的,所以order_date條件無法利用索引進行快速查找,只能在所有region為'華東'的記錄中逐條掃描。
  • WHERE region = '華東' AND status > '待發貨' AND order_date = '2025-09-07':只能使用region和status部分。當遇到范圍查詢(>、<、BETWEEN等)時,該列后續的索引列將無法再用于精確匹配。因為status大于'待發貨'的是一個范圍,在這個范圍里,order_date是無序的。

這里有一個簡化的口訣可以幫助記憶:等值匹配,從左到右;范圍中斷,跳過失效。

2. 其他常見索引分類

除了上述所說的聚簇索引和非聚簇索引的分類外,Mysql還有以下幾種分類,不過這些分類都不復雜,我們只需了解其對應的概念即可。

  • 唯一索引(Unique Index):顧名思義,索引列的值必須唯一,但允許有空值(NULL)。主鍵是一種特殊的唯一索引,但不允許有空值。
  • 組合索引(Composite Index):即聯合索引,由多個列共同組成的索引。它在實際業務中非常常用,是實現覆蓋索引和遵循最左前綴原則的關鍵。
  • 前綴索引(Prefix Index):當索引列是很長的字符串時,為了節約索引空間和提高查詢效率,我們可以只取字符串的前一部分作為索引。例如,對一個varchar(255)的URL列,我們可以只索引其前50個字符。
  • 全文索引(Full-Text Index):主要用于在大量文本中進行關鍵詞搜索,類似于搜索引擎的功能。它有自己的特殊語法(如 MATCH() AGAINST()),通常用于文章、評論等字段。

四、索引的維護成本

索引在極大提升查詢性能的同時,也帶來了不可忽視的成本,它并不是多多益善的“銀彈”。

  • 空間成本:每一個索引都是一棵B+樹,需要實實在在地占用磁盤空間。索引越多,占用的空間就越大。
  • 時間成本(維護成本):當對表中的數據進行INSERT、UPDATE、DELETE操作時,數據庫系統不僅要修改數據行,還必須同步地去修改每一棵相關的索引樹,以保證其數據的正確性和有序性。這個過程可能涉及到B+樹節點的頁分裂、合并等復雜操作,會引入額外的性能開銷。

因此,索引的設計是一門權衡的藝術。為一張表創建過多不必要的索引,尤其是在寫操作頻繁的場景下,反而會嚴重拖累系統的整體性能。

五、面試實戰指南

掌握了以上知識,你已經能應對80%的索引問題。但想在面試中真正征服面試官,還需要準備一些更具深度和廣度的話題。這里再考察索引問題的時候,有經驗的面試官很可能對以下三個問題深挖。

1. B+樹對比其他數據結構

如果這是考察你B+樹的數據結構,這只是一個初級的八股問題。有經驗的面試官一般會這樣問:


B+樹雖然好,但是其他數據結構同樣有著不錯的查詢性能,那為什么不用B樹、紅黑樹、跳表呢?”


這是一個絕佳的展示你知識廣度和深度的機會,體現你對技術選型背后思考的理解。你可以這樣回答:

(1) 對比B樹:B樹的非葉子節點也存儲數據。這導致了兩個致命缺陷:第一,由于非葉子節點變“胖”了,單個節點能容納的關鍵字和指針就少了,導致樹的高度更高,查詢時磁盤I/O次數更多。第二,范圍查詢時,B樹可能需要進行復雜的跨層級回溯遍歷,效率遠不如B+樹葉子節點之間簡單的鏈表遍歷。

(2) 對比紅黑樹/平衡二叉樹:這類數據結構都是為內存設計的,它們的查詢深度與數據量成對數關系(logN)。在動輒千萬、上億條記錄的數據庫場景下,由于二叉樹的每個節點最多只能有兩個孩子結點,所以樹的高度依然會非常高,會導致大量的磁盤I/O,這在數據庫的設計中是無法接受的。

并且二叉搜索樹在插入,刪除節點的時候可能出現樹極度不平衡的情況,出現樹退化成鏈表。這個時候就需要進行左旋右旋來維持樹的平衡:在滿足二叉搜索樹的條件下,要求任何節點的兩個子樹高度差不超過1。更新的時間復雜度也是 O(log(N)),這個性能損耗同樣也不可忽視。

(3) 對比跳表:跳表是一種非常優秀的內存數據結構(Redis的zset就是用了它),查詢效率的期望值也很高。但它的平衡性依賴于隨機性,查詢性能存在微小的波動,而數據庫作為底層系統,需要的是一種高度穩定、可預期的查詢性能。

更重要的還是IO次數太多的問題,跳表是鏈表結構,一條數據一個結點,如果最底層要存放2kw數據,且每次查詢都要能達到二分查找的效果,2kw大概在2的24次方左右,所以,跳表大概高度在24層左右。最壞情況下,這24層數據會分散在不同的數據頁里,也即是查一次數據會經歷24次磁盤IO。

綜合來看數據庫索引的技術選型,本質上還是在磁盤I/O次數、查詢效率穩定性和特定查詢場景(如范圍查詢)的友好度這幾個關鍵指標之間做出的最優工程權衡。

2. 索引失效

面試官:“有了索引,查詢就一定快嗎?或者說,什么情況下MySQL會放棄使用索引?”

這個問題考察的是你對MySQL查詢優化器工作原理的理解。答案是:不一定。優化器在某些情況下會認為全表掃描比走索引更快,從而放棄使用索引。一般情況下有以下這么幾種,在面試的時候,你只要能夠說出一些基本上不會有什么大的問題:

  • 查詢條件不滿足最左前綴原則:這是最常見的情況,前面已經詳述。
  • 在索引列上進行任何操作:包括計算、函數調用或隱式類型轉換。例如 WHERE YEAR(order_date) = 2025 或者 WHERE phone_number = 13812345678(如果phone_number是字符串類型,這里發生了隱式類型轉換),都會導致索引失效。
  • 使用 != 或 <> 操作符:通常無法有效利用索引,因為它們過濾掉的數據太少。
  • LIKE 查詢以通配符 % 開頭:例如 LIKE '%關鍵詞'。這種情況索引無法定位起始點,只能全表掃描。而 LIKE '關鍵詞%' 是可以走索引的。
  • 數據區分度低(選擇性差):比如在一個gender(性別)列上建索引,當查詢 WHERE gender = '男' 時,優化器通過統計信息發現符合條件的數據可能占了全表的近一半,它會認為“走索引(一次索引查找+大量回表)”的總成本,甚至高于“直接全表掃描”的成本,于是果斷放棄索引。

以上只是一些常見的索引失效情況,在實踐中,我們必須通過 EXPLAIN 命令來分析和驗證索引的實際使用情況,而不是靠主觀猜測。

3. NULL值索引

面試官:“我對含有NULL值的列建了索引,它會起作用嗎?”

這又是一個常見的知識誤區,也是一個很好的加分項。很多人認為索引列不能為NULL,或者對NULL值的查詢無法使用索引。

在MySQL(特別是InnoDB)中,這個說法并不完全準確:

  • 索引可以包含NULL值:索引會專門處理NULL值,WHERE column IS NULL 和 WHERE column IS NOT NULL 的查詢條件是可以正常利用到索引的。
  • 唯一索引的特殊處理:在唯一索引列中,你可以插入多個NULL值。這是因為在SQL標準中,NULL 和任何值(包括另一個 NULL)進行比較的結果都是未知的(unknown),所以多個 NULL 不被視為違反唯一性約束。

盡管如此,還是強烈建議為字段設置 NOT NULL 約束并提供默認值。這樣做主要是為了保證數據的明確性、避免業務邏輯中出現復雜的NULL值判斷。

六、小結

數據庫索引是一個龐大而精深的領域。在面試中,我們不需要追求面面俱到,但必須展現出結構化的知識體系和由表及里的深入思考。你需要重點掌握B+樹的數據結構、聚簇索引與非聚簇索引的區別、回表的概念,以及最左匹配原則的運作機制。

要想在面試中脫穎而出,你需要從以下幾個方面下功夫,展現你的思考深度:

  • MySQL為何選擇B+樹? 能否從I/O成本、范圍查詢、內存效率等多個維度,對比分析不同數據結構的優劣。
  • 數據庫為何會放棄使用索引? 能否說出幾種常見的索引失效場景,以及優化思路。
  • 索引與NULL的關系? 能否澄清常見的誤區,并給出最佳實踐建議。
責任編輯:趙寧寧 來源: IT楊秀才
相關推薦

2025-09-17 07:56:32

2019-09-24 09:33:53

MySQLB+樹InnoDB

2021-07-04 15:16:14

索引B+數據庫

2019-03-14 09:51:50

MySQL存儲邏輯架構

2022-03-28 08:24:52

MySQL聚簇索引非聚簇索引

2021-06-02 10:23:06

索引B+樹數據

2015-04-21 13:09:01

B+樹MySQL索引結構

2023-12-06 09:10:28

JWT微服務

2024-05-22 09:01:53

InnoDBB+索引

2020-09-08 06:43:53

B+樹面試索引

2019-09-19 14:03:32

B樹節點數據結構

2019-08-29 10:46:22

MySQL索引數據庫

2020-04-01 18:08:57

MySQL B-樹B+樹

2020-02-12 19:01:22

索引B-樹B+樹

2019-01-29 19:43:10

MySQL索引數據庫

2021-02-16 16:38:41

MySQLB+樹索引

2020-03-19 07:53:56

Mysql引擎B+樹

2022-04-16 14:20:29

MySQL數據庫

2025-05-20 01:00:00

2023-06-06 09:03:06

InnodbMySQL
點贊
收藏

51CTO技術棧公眾號

日韩久久综合| 日韩高清不卡| 99re成人精品视频| 国产精品丝袜久久久久久高清 | 国产精品女主播在线观看| 亚洲一区二区免费在线| 精品人妻一区二区三区免费看 | 红桃av在线播放| 黄色网页在线免费看| 北岛玲一区二区三区四区| 国产精品九九久久久久久久| 印度午夜性春猛xxx交| 亚洲自拍另类欧美丝袜| 日韩电影在线观看一区二区| 欧美日韩p片| 在线精品91av| av黄色一级片| 日韩一区二区三区精品视频第3页| 日韩欧美亚洲成人| 色综合91久久精品中文字幕| 成人啪啪18免费游戏链接| av免费在线一区| 亚洲福利一区二区| 国产又爽又黄ai换脸| 欧美少妇另类| eeuss影院一区二区三区| 国产综合色香蕉精品| 99精品人妻国产毛片| 国产综合精品| 美女黄色丝袜一区| 你懂得视频在线观看| 西瓜成人精品人成网站| 精品国产99国产精品| 日本一二区免费| 福利一区和二区| 日本高清免费不卡视频| av动漫在线看| 欧美在线极品| 欧美日韩国产精品一区二区三区四区| 福利网在线观看| 午夜在线播放| 国产女同性恋一区二区| 免费中文日韩| 四虎在线观看| 91美女在线视频| 国产在线精品一区二区中文| va视频在线观看| 狠狠色丁香婷婷综合| 国产精品亚洲视频在线观看| 69国产精品视频免费观看| 亚洲综合不卡| 国产91av在线| 亚洲国产成人精品女人久久| 亚洲美女一区| 久久久免费在线观看| 精品无码人妻一区二区三| 欧美女激情福利| 久久久久在线观看| 自拍偷拍欧美亚洲| 亚洲专区一区二区三区| 国产suv精品一区二区三区88区| 中文字幕国产在线观看| 日本成人中文字幕| 国产精品亚洲第一区| 国产巨乳在线观看| 国产成人免费视频精品含羞草妖精| 亚洲伊人第一页| 黄色美女一级片| 91婷婷韩国欧美一区二区| 精品在线不卡| 成人午夜电影在线观看| 成人欧美一区二区三区白人| 韩国黄色一级大片| 日本电影在线观看| 精品久久久久久久久久久久久久| 妺妺窝人体色www在线小说| japanese23hdxxxx日韩| 欧美精品色一区二区三区| 麻豆传媒在线看| 欧美电影免费网站| 在线播放日韩专区| 一区视频免费观看| 久久aⅴ国产紧身牛仔裤| 国产精品一区二区三区在线播放| 97国产成人无码精品久久久| 粉嫩高潮美女一区二区三区| 蜜桃麻豆91| 老司机av在线免费看| 午夜av电影一区| 中文久久久久久| 精品国产一区二| 日韩极品精品视频免费观看| 久久视频一区二区三区| 国模大胆一区二区三区| 国产精品99一区| www.国产欧美| 国产欧美精品一区二区色综合朱莉 | 毛片一区二区三区四区| 日韩综合av| 国产视频一区在线| 丁香花五月激情| 久久久久99| 国产成人看片| 久久亚洲天堂| 欧美性xxxx在线播放| 超碰中文字幕在线观看| 欧美精美视频| 欧美大学生性色视频| 波多野结衣大片| jvid福利写真一区二区三区| 亚洲永久激情精品| 丝袜美腿诱惑一区二区三区| 日韩精品一区二区三区在线| 永久免费观看片现看| 国产精品美女久久久| 亚洲一区美女视频在线观看免费| 国产视频精品久久| 欧美日韩激情小视频| 老女人性生活视频| 欧美好骚综合网| 日本久久久久久久久| 免费观看的毛片| 亚洲视频综合在线| 91插插插插插插插插| 五月激激激综合网色播| 午夜精品久久久久久99热| 国产乱码一区二区| 中文字幕一区二区三区在线播放| 亚洲人成色77777| 欧美jizz19性欧美| 97视频在线观看亚洲| 性生交生活影碟片| 一区二区三区欧美久久| 亚洲高清视频免费| 99精品电影| 国产精品久久久久久网站| 亚洲三区在线播放| 欧美日韩另类视频| 三级电影在线看| 亚洲欧洲午夜| 久久99精品久久久久久秒播放器 | 又大又长粗又爽又黄少妇视频| 91久久夜色精品国产按摩| 国产精品中文久久久久久久| 福利在线视频导航| 精品污污网站免费看| 国产一二三四区在线| 日本欧美久久久久免费播放网| 秋霞在线观看一区二区三区| 姬川优奈av一区二区在线电影| 亚洲日本中文字幕| 中日精品一色哟哟| 国产精品成人网| www.成人黄色| 欧美午夜不卡影院在线观看完整版免费| 成人免费福利视频| jizz性欧美| 亚洲精品一区二区三区福利| 五月天综合激情| 久久久久青草大香线综合精品| 国产aaa一级片| 日韩精品一区二区三区免费观影 | 亚洲天堂中文在线| 亚洲欧美怡红院| 欧美69精品久久久久久不卡 | 国产精品传媒视频| 黄色片免费网址| 伊人久久大香线蕉av超碰演员| 精品国产电影| 欧美大片高清| 久久精品国产69国产精品亚洲| av中文在线观看| 天天做天天摸天天爽国产一区| 国产精品久久久久无码av色戒| 免费成人在线视频观看| 精品免费久久久久久久| 欧美综合自拍| 国产精品稀缺呦系列在线| a毛片在线播放| 亚洲精品日韩在线| 欧美三级网站在线观看| 亚洲精品国产成人久久av盗摄 | 欧美在线免费看| 91精彩在线视频| 精品毛片乱码1区2区3区| 国产成人综合欧美精品久久| 亚洲国产精品高清| 在线xxxxx| 奇米综合一区二区三区精品视频| 欧洲美女和动交zoz0z| 老司机在线精品视频| 国产精品久久久久久亚洲调教| 青青青草视频在线| 亚洲人成亚洲人成在线观看| 99久久夜色精品国产亚洲| 欧美日韩国产色视频| 四虎影院中文字幕| 26uuu另类欧美亚洲曰本| 亚洲综合123| 三级欧美韩日大片在线看| 精品嫩模一区二区三区| 亚洲小说图片视频| 97se在线视频| 久久久久毛片| 国产91精品青草社区| 最爽无遮挡行房视频在线| 亚洲欧美国产一本综合首页| www男人的天堂| 欧美日韩中文另类| 中文字幕激情小说| 伊人婷婷欧美激情| 亚洲a∨无码无在线观看| 91视频.com| 国产精品嫩草69影院| 久久 天天综合| 在线观看免费黄网站| 国产亚洲在线| 波多野结衣av一区二区全免费观看| 青青草国产免费一区二区下载| 久久国产精品久久| 亚洲一区二区三区免费| 成人国产精品久久久| 国产69精品久久| 国产成人拍精品视频午夜网站| 91高清视频在线观看| 欧美成在线视频| 久久久久久久久免费视频| 亚洲香蕉成人av网站在线观看| 天堂网av在线播放| 欧美精品一区二区蜜臀亚洲| 99久久精品国产一区二区成人| 欧美日韩中文字幕一区二区| 在线免费观看国产精品| 欧美午夜激情小视频| 久久免费激情视频| 黄网站色欧美视频| 久久艹免费视频| 精品久久久久久中文字幕| 草久视频在线观看| 欧美性20hd另类| 中文字幕国产在线观看| 日本韩国一区二区| 一级一级黄色片| 欧美日韩dvd在线观看| 一级片视频播放| 3atv在线一区二区三区| 99久久精品国产色欲| 日韩欧美国产精品| 丰满少妇被猛烈进入| 欧美精品一区二区三区四区| 亚洲精品18p| 亚洲国产日韩欧美在线动漫| 日韩av成人| 一本一道久久a久久精品逆3p| 国产网站在线播放| 最近2019中文免费高清视频观看www99 | av一区二区三区| 久久人人爽人人爽人人片| 91视视频在线直接观看在线看网页在线看| 小毛片在线观看| 久久亚洲私人国产精品va媚药| 中文字幕一区二区三区人妻不卡| 国产亚洲精久久久久久| 网爆门在线观看| 伊人一区二区三区| www..com国产| 欧美丝袜丝交足nylons| 国产精品午夜福利| 精品久久人人做人人爽| 无码精品黑人一区二区三区| 亚洲区在线播放| 黄色av电影在线播放| 欧美精品videos| 午夜无码国产理论在线| 成人免费网站在线| 国产精品毛片av| 日韩成人av电影在线| 亚洲综合激情在线| 日韩中文字幕在线视频观看| 日本不卡视频在线| wwwxxxx在线观看| 久久精品亚洲精品国产欧美| 久久国产波多野结衣| 天天色综合成人网| 亚洲一区中文字幕在线| 精品国产免费久久| 国产三级视频在线看| 美女999久久久精品视频 | 91性高湖久久久久久久久_久久99| 亚洲一区二区三区四区电影| 欧美精品在线一区| 欧美a级片一区| 免费在线观看毛片网站| 国产伦精一区二区三区| 国产精品无码久久久久一区二区| 亚洲免费av网站| 高潮无码精品色欲av午夜福利| 欧美一级免费大片| a视频网址在线观看| 久久久久成人精品| 国产精品99| 久久精品五月婷婷| 午夜精品av| 国产精品区在线| 久久综合九色综合欧美98| 日本少妇高清视频| 欧美日韩在线播放| 欧美日韩影视| 97精品国产91久久久久久| 激情五月综合婷婷| 视频一区国产精品| 久久av一区二区三区| 久久精品aⅴ无码中文字字幕重口| 国产精品色哟哟| 无码人妻丰满熟妇奶水区码| 亚洲精品www久久久| 国产网红在线观看| 成人精品久久久| 色999国产精品| 欧美黄色一级片视频| 成人91在线观看| 免费中文字幕视频| 欧美一区2区视频在线观看| 日本福利专区在线观看| 日韩免费在线观看视频| 台湾佬综合网| 成熟了的熟妇毛茸茸| 懂色av中文字幕一区二区三区| 国产美女福利视频| 欧美日韩一区二区三区四区| 国产私人尤物无码不卡| 日韩av日韩在线观看| 亚洲福利天堂| 男人添女人下面高潮视频| 99久久er热在这里只有精品15| 国产一级在线播放| 精品国产99国产精品| а√在线中文网新版地址在线| 成人自拍爱视频| 激情久久一区| 黄色网址在线视频| 天天亚洲美女在线视频| 全部免费毛片在线播放网站| 欧美亚洲视频在线观看| 亚洲午夜久久| 天天爱天天操天天干| 国产精品亲子伦对白| 亚洲中文字幕在线一区| 久久夜色撩人精品| 亚洲精品一区在线| 福利在线一区二区| 99精品视频在线观看免费| 精品国产乱码一区二区| 亚洲精品网站在线播放gif| 成人va天堂| 一本一生久久a久久精品综合蜜| 精品一区二区日韩| 欧美精品成人久久| 日韩av在线免播放器| 奇米777日韩| 在线国产99| 国产成a人亚洲| 国产一级做a爱片久久毛片a| 国产亚洲精品激情久久| 少妇高潮一区二区三区99| 青青视频免费在线| 91在线观看污| 成人黄色片在线观看| 欧美尺度大的性做爰视频| jizz国产精品| 蜜臀久久99精品久久久酒店新书| 中文字幕+乱码+中文字幕一区| 国产又粗又猛视频免费| 欧美激情一区二区三级高清视频 | 日韩成人中文字幕在线观看| 少妇一区视频| 国产精品12p| ww久久中文字幕| 国产精品呻吟久久| 国内偷自视频区视频综合| 国产一区二区亚洲| 99国产精品免费视频| 色又黄又爽网站www久久| 国产精品va在线观看视色| 精品一区久久久久久| 精品一区二区三区免费播放| 日本少妇性高潮| 日韩在线播放视频| 国产精品中文字幕制服诱惑| 国产精品一区二区羞羞答答| 亚洲成人免费视频| 天天影视久久综合| 精品一区二区三区国产| 国产在线播精品第三| 久久精品视频7| 久久99国产精品自在自在app| 国产一区三区在线播放| 日本一区二区在线免费观看| 欧美精品一二三| 国产v综合v|