精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

久久久久久久久久网| 国产精品一品二品| 亚洲欧美国产精品va在线观看| 精品久久久久久久久久中文字幕| 国产天堂在线| 国产精品一级片在线观看| 91av在线网站| 美国一级片在线观看| 羞羞的网站在线观看| 强制捆绑调教一区二区| 欧美另类极品videosbest最新版本| 久久久国产欧美| 羞羞网站在线看| 国产精品污网站| 欧美一级大片视频| 天天天天天天天天操| 欧美性xxxxx| 青青草99啪国产免费| xxxx日本少妇| 欧美老女人另类| 亚洲成人精品久久久| 亚州精品一二三区| 丰满人妻一区二区三区四区53| 久久福利毛片| 欧美精品18videos性欧| 999福利视频| 少妇精品久久久一区二区| 欧美变态tickling挠脚心| 欧美特级aaa| 欧美成人影院| 精品国产999| 亚洲中文字幕无码一区二区三区| 99se视频在线观看| 久久久蜜桃精品| 国产伦精品一区| www.四虎在线观看| 国内成人精品2018免费看| 国产精品成av人在线视午夜片| 日韩aaaaaa| 亚洲视频日本| 亚洲专区视频| 精品福利免费观看| 国产小视频免费| 欧美国产日韩在线播放| 亚洲一卡二卡在线观看| 日韩精品一二区| 青青草成人在线| 婷婷激情五月网| 国产精品综合| 欧美孕妇孕交黑巨大网站| 国产小视频在线看| 亚洲一本视频| 国产69精品久久久久99| 久久精品美女视频| 一本久道久久综合婷婷鲸鱼| 97久久伊人激情网| 天堂网av手机版| 亚洲专区免费| 日本精品视频网站| 波多野结衣视频网址| 日韩电影在线免费观看| 国产精品热视频| 在线观看视频二区| 韩国av一区二区三区在线观看| 国产精品情侣自拍| 99免费在线视频| 国产成人精品在线看| 国产精品一区二区免费| 亚洲欧美一区二区三| 久久久久久97三级| 一区二区三区国| 国内精品国产成人国产三级| 国产乱码精品1区2区3区| 96久久精品| 亚洲a视频在线观看| 亚洲欧美日韩一区在线观看| 亲爱的老师9免费观看全集电视剧| 欧美日韩一级黄色片| 日本va欧美va欧美va精品| 成人激情在线观看| 亚洲国产成人在线观看| 久久综合一区二区| 亚洲综合首页| 蜜臀av在线| 色哟哟亚洲精品| 日韩精品一区二区在线视频| 春色校园综合激情亚洲| 欧美在线免费观看视频| 一本色道久久99精品综合| 高h视频在线观看| 精品欧美aⅴ在线网站| 欧美日韩大尺度| 亚洲精品国产九九九| 欧美色涩在线第一页| 亚洲国产综合av| 国产精品自在| 日韩网站在线观看| 国产又爽又黄的视频| 裸体一区二区三区| 久久国产主播精品| 国产一二区在线| 国产精品美女久久久久久久| 成年人视频网站免费| 精品免费av在线| 一本一道综合狠狠老| 午夜免费福利网站| 久久99久久人婷婷精品综合 | 老牛影视av牛牛影视av| 国产亚洲精品aa| 欧美成人高潮一二区在线看| 久久亚洲精品爱爱| 精品视频1区2区| 国产吃瓜黑料一区二区| 成人国产精品久久| 亚洲第一区在线| 国产无遮挡在线观看| 狠色狠色综合久久| 国产精品pans私拍| 免费看黄色一级视频| 中文字幕成人av| 91猫先生在线| 白白在线精品| 亚洲天堂av网| 国产稀缺真实呦乱在线| 精品写真视频在线观看| 欧美日韩在线观看一区二区三区| 天天干视频在线| 国产精品久久毛片| 午夜肉伦伦影院| 欧美xxx性| 欧美mv和日韩mv国产网站| 美国美女黄色片| 亚洲一区一卡| 久久久免费看| 91福利区在线观看| 欧美成人精精品一区二区频| 婷婷丁香综合网| 日韩中文欧美在线| 日韩福利在线| 天堂av中文在线观看| 欧美刺激脚交jootjob| 日本黄大片一区二区三区| 特黄特色欧美大片| 欧美激情va永久在线播放| 精品少妇一二三区| 国产成a人无v码亚洲福利| 夜夜爽www精品| 日韩制服一区| 一本色道久久综合狠狠躁篇的优点| 日本三级黄色大片| 99久久久久免费精品国产| 国产免费内射又粗又爽密桃视频| 久久精品黄色| 日韩欧美黄色影院| 18岁成人毛片| 国产一区二区三区四区五区入口| 400部精品国偷自产在线观看| 2020国产精品小视频| 最好看的2019年中文视频| 波多野结衣二区三区| 国产女主播一区| 一个色的综合| 日韩av黄色| 久久久精品中文字幕| 日本亚洲欧美在线| 成人网在线免费视频| 国产精品久久国产| 久久精品亚洲成在人线av网址| 91精品国产成人| 九一在线视频| 欧美日韩一区二区三区四区| 三级黄色在线观看| 国产尤物一区二区在线| 亚洲国产精品成人天堂| 色88888久久久久久影院| 日本成人在线视频网址| 国产三级电影在线| 在线不卡欧美精品一区二区三区| 免费人成视频在线| 波多野结衣一区二区三区| 自慰无码一区二区三区| 欧美影院三区| 91黄色国产视频| wwww亚洲| 色伦专区97中文字幕| 国产免费一区二区三区最新不卡| 亚洲自拍偷拍欧美| 女人被狂躁c到高潮| 日韩精品亚洲专区| 欧美日韩dvd| 久久悠悠精品综合网| 国产精品久久久久一区二区| 精品黄色免费中文电影在线播放| 亚洲第一级黄色片| 欧美亚洲另类小说| 亚洲精品乱码久久久久久日本蜜臀| 亚洲视频 中文字幕| 久久99九九99精品| 国产精品一色哟哟| 俺要去色综合狠狠| 国产成人免费观看| 日本综合视频| 91精品国产99| 4438x成人网全国最大| 亚洲精品一二区| aa视频在线免费观看| 亚洲主播在线播放| 波多野结衣家庭教师| 91久色porny| 无码人妻少妇色欲av一区二区| 国产亚洲精品久久久久婷婷瑜伽| 亚洲成人精品电影在线观看| 亚洲精品一级二级三级| 亚洲淫片在线视频| 日韩在线免费| 久久欧美在线电影| 在线国产91| 国产亚洲在线播放| 亚洲 欧美 精品| 日韩一卡二卡三卡| 国产九色91回来了| 精品久久中文字幕| 久久久99精品| 综合精品久久久| 欧美激情视频二区| 26uuu精品一区二区| 尤物网站在线观看| 国产电影精品久久禁18| 欧美三级午夜理伦三级富婆| 亚洲免费在线| 成人中文字幕在线播放| 91久久中文| 欧美大黑帍在线播放| 先锋资源久久| 亚洲电影免费| 久久国产亚洲精品| 视频一区二区精品| 国产a久久精品一区二区三区| 免费看黄在线看| 久久精品成人一区二区三区蜜臀| 国产情侣一区二区三区| 97视频免费在线观看| 免费大片在线观看www| 亚洲一级片在线看| 欧美伦理影视网| 日韩精品欧美国产精品忘忧草| 男人天堂av网| 亚洲精品久久久久中文字幕欢迎你| 亚洲国产精品久久人人爱潘金莲 | 一区二区三区动漫| 三级视频在线| 精品一区精品二区| 日本天堂在线| 亚洲成人av在线播放| 色呦呦免费观看| 亚洲福利视频二区| 色丁香婷婷综合久久| 欧美一级在线视频| 免费看黄色一级视频| 亚洲国产日韩精品在线| 亚欧洲精品视频| 亚洲欧美中文日韩在线v日本| 国产粉嫩一区二区三区在线观看 | 国产精品av网站| 成人午夜亚洲| 成人女保姆的销魂服务| va天堂va亚洲va影视| 91精品国产综合久久久久久丝袜 | 国产精品天堂| 中文字幕亚洲欧美| av在线看片| 亚洲97在线观看| 日韩av中字| 国产精品偷伦一区二区 | 快she精品国产999| 亚洲免费一级视频| 国产在线看一区| 亚洲精品乱码久久久久久久| 国产亚洲精品资源在线26u| 国产一二三四区在线| 亚洲欧美日韩在线| 青青草成人免费| 色综合久久99| 国产强伦人妻毛片| 亚洲娇小xxxx欧美娇小| 你懂的视频在线观看| 国产一区二区三区视频| 久久久久久久久免费视频| 欧美激情一区二区三区成人| 日韩电影免费看| 国产精自产拍久久久久久| 大桥未久女教师av一区二区| 欧美日韩综合久久| 亚洲AV无码精品色毛片浪潮| 91麻豆精品国产无毒不卡在线观看 | 91精品国产福利在线观看麻豆| 国产 国语对白 露脸| 久久久久国内| 一道本在线免费视频| 91在线国产福利| 午夜国产小视频| 性做久久久久久| 97人妻一区二区精品免费视频 | 同心难改在线观看| 伊人一区二区三区久久精品| 精品一性一色一乱农村| 国产精品88a∨| 97一区二区国产好的精华液| 免费精品视频一区二区三区| 欧美日韩视频免费观看| 91在线免费网站| 亚洲图片久久| 丰满人妻一区二区三区53号 | 2019国产精品自在线拍国产不卡| 韩国成人漫画| 国产欧美日韩伦理| 99久久这里只有精品| a级黄色一级片| 国产乱子伦一区二区三区国色天香| 受虐m奴xxx在线观看| 夜夜爽夜夜爽精品视频| 影音先锋黄色网址| 亚洲网站在线看| 亚洲精品**中文毛片| 懂色av一区二区三区在线播放| 日韩精品一卡| 一道本视频在线观看| 久久综合久久久久88| 精品爆乳一区二区三区无码av| 91国偷自产一区二区三区成为亚洲经典 | 国产成人av| 欧美综合在线播放| 国产一区二区在线电影| 99re6热在线精品视频| 日韩欧美大尺度| 亚洲欧洲精品视频| 午夜免费日韩视频| 欧美顶级毛片在线播放| 男女日批视频在线观看| 国产真实乱对白精彩久久| 欧美亚洲色综久久精品国产| 欧美午夜www高清视频| 日本xxxxwww| 久久艳片www.17c.com| 国产精品一区二区三区四区在线观看 | 久久亚洲黄色| 无罩大乳的熟妇正在播放| 成人蜜臀av电影| 久久久久久久99| 日韩高清中文字幕| 色多多在线观看| 鲁片一区二区三区| 中文字幕一区二区三区乱码图片 | 欧美一级特黄视频| 亚洲人成在线播放| 三级成人在线| 欧美高清视频一区二区三区在线观看 | 色av中文字幕一区| 97精品资源在线观看| 在线视频亚洲自拍| 麻豆免费精品视频| 青青青在线免费观看| 日韩欧美的一区二区| 国产盗摄在线视频网站| 国产精品v欧美精品∨日韩| 一区精品久久| 黄色a一级视频| 欧美性猛交xxxx黑人| 91社区在线观看| 成人在线观看视频网站| 亚洲国产91| 最近日本中文字幕| 欧美伊人久久久久久久久影院 | 免费一级欧美在线大片 | 日本女人一区二区三区| 小向美奈子av| 日韩视频免费直播| 国产免费拔擦拔擦8x高清在线人| 色综合久久久久久久久五月| 国内一区二区视频| 日韩黄色三级视频| 一区二区三区四区在线观看视频| 成人精品视频在线观看| 欧美精品久久久久久久自慰| 久久免费美女视频| 国产深喉视频一区二区| 97国产精品视频人人做人人爱| 红桃成人av在线播放| 中文字幕在线导航| 亚洲成va人在线观看| 国产在线电影| 99在线视频播放| 免费观看30秒视频久久| 欧美精品一区二区成人| 亚洲乱码国产乱码精品精| 国产高清亚洲| 国模杨依粉嫩蝴蝶150p| 亚洲图片你懂的| 日韩精品视频无播放器在线看| 亚洲综合色激情五月|