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

曾經,我以為我很懂MySQL索引...

原創
數據庫 MySQL
騰訊云數據庫負責人林曉斌說過:“我們面試 MySQL 同事時只考察兩點,索引和鎖”。

【51CTO.com原創稿件】

 騰訊云數據庫負責人林曉斌說過:“我們面試 MySQL 同事時只考察兩點,索引和鎖”。

[[339341]]
圖片來自 Pexels

 

言簡意賅,MySQL 索引的重要性不言而喻。MySQL 索引歷經了多個版本的迭代,從語法到底層數據結構都有很多改變。

MySQL 索引,我們真的了解么?好了,今天我們一起來看看 MySQL 索引的前世今生,一起聊聊索引的那些事兒。

[[339342]]

 

什么是索引?

在關系數據庫中,索引是一種單獨的、物理的對數據庫表中一列或多列的值進行排序的一種存儲結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單。

索引的作用相當于圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。

當表中有大量記錄時,若要對表進行查詢:

  • 第一種搜索信息方式是全表搜索,是將所有記錄一一取出,和查詢條件進行一一對比,然后返回滿足條件的記錄,這樣做會消耗大量數據庫系統時間,并造成大量磁盤 I/O 操作。
  • 第二種就是在表中建立索引,然后在索引中找到符合查詢條件的索引值,最后通過保存在索引中的 ROWID(相當于頁碼)快速找到表中對應的記錄。

MySQL 5.5 以后 InnoDB 儲引擎使用的索引數據結構主要用:B+Tree;本篇文章帶大家以 B+Tree 前世今生為主線來聊一聊。

Mark:B+Tree 可以對 <,<=,=,>,>=,BETWEEN,IN,以及不以通配符開始的 LIKE 使用索引。(MySQL 5.5 后)

這些事實或許會顛覆你的一些認知,比如在你讀過的其他文章或書中。以上這些都屬于“范圍查詢”,都是不走索引的!

沒錯,早在 5.5 以前,優化器是不會選擇通過索引搜索的,優化器認為這樣取出的行多與全表掃描的行,因為還要回表查一次嘛,可能會涉及 I/O 的行數更多,被優化器放棄。

經過算法(B+Tree)優化后,支持對部分范圍類型的掃描(得利與 B+Tree 數據結構的有序性)。

該做法同時也違反了最左前綴原則,導致范圍查詢后的條件無法用到聯合索引,我們在后面詳細說明。

索引的優缺點

索引的優點如下:

  • 索引大大減小了服務器需要掃描的數據量。
  • 索引可以幫助服務器避免排序和臨時表。
  • 索引可以將隨機 I/O 變成順序 I/O。

索引的缺點如下:

  • 雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行 INSERT、UPDATE 和 DELETE。因為更新表時,MySQL 不僅要保存數據,還要保存索引文件。
  • 建立索引會占用磁盤空間的索引文件。一般情況這個問題不算嚴重,但如果你在一個大表上創建了多種組合索引,且伴隨大量數據量插入,索引文件大小也會快速膨脹。
  • 如果某個數據列包含許多重復的內容,為它建立索引就沒有太大的實際效果。
  • 對于非常小的表,大部分情況下簡單的全表掃描更高效。

因此應該只為最經常查詢和最經常排序的數據列建立索引。(MySQL 里同一個數據表里的索引總數限制為 16 個)

數據庫存在的意義之一就是是解決數據存儲和快速查找的。那么數據庫的數據存在哪?沒錯,是磁盤,磁盤的優點是啥?便宜!缺點呢?相比內存訪問速度慢。

那么你知道 MySQL 索引主要使用的數據結構么?B+樹!你脫口而出。

那 B+樹是什么樣的數據結構?MySQL 索引又是為什么選擇了 B+樹呢?

其實最終選用 B+樹是經歷了漫長的演化:

  1. 二叉排序樹 → 二叉平衡樹 → B-Tree(B樹) → B+Tree(B+樹) 

有小伙伴問我“B 樹跟 B-樹有什么區別”?這里普及一下,MySQL 數據結構只有B-Tree(B 樹)和 B+Tree(B+樹),多只是讀法不同罷了,“B-Tree” 一般統稱為 B 樹,你叫他 B-樹也行!

還有小伙伴提到的紅黑樹,是編程語言中的存儲結構,不是 MySQL 的;如 Java 的 HashMap 就是用的鏈表加紅黑樹。

好了,今天就帶著大家一起看一下演化成 B+樹的過程吧。

B+Tree 索引的前世今生

①二叉排序樹

理解 B+樹之前,簡單說一下二叉排序樹,對于一個節點,它的左子樹的孩子節點值都要小于它本身,它的右子樹的孩子節點值都要大于它本身。

如果所有節點都滿足這個條件,那么它就是二叉排序樹。(此處可以串一下二分查找的知識點)

 

上圖是一顆二叉排序樹,你可以嘗試利用它的特點,體驗查找 9 的過程:

  • 9 比 10 小,去它的左子樹(節點 3)查找。
  • 9 比 3 大,去節點 3 的右子樹(節點 4)查找。
  • 9 比 4 大,去節點 4 的右子樹(節點 9)查找。
  • 節點 9 與 9 相等,查找成功。

一共比較了 4 次,那你有沒有想過上述結構的優化方式?

②AVL 樹(自平衡二叉查找樹)

 

上圖是 AVL 樹,節點個數和值均和二叉排序樹一摸一樣。

再來看一下查找 9 的過程:

  • 9 比 4 大,去它的右子樹查找。
  • 9 比 10 小,去它的左子樹查找。
  • 節點 9 與 9 相等,查找成功。

一共比較了 3 次,同樣的數據量比二叉排序樹少了一次,為什么呢?因為 AVL 樹高度要比二叉排序樹小,高度越高意味著比較的次數越多;不要小看優化的這一次,假如是 200w 條數據,比較次數會明顯地不同。

你可以想象一下一棵 100 萬節點的平衡二叉樹,樹高 20。一次查詢可能需要訪問 20 個數據塊。在機械硬盤時代,從磁盤隨機讀一個數據塊需要 10 ms 左右的尋址時間。

也就是說,對于一個 100 萬行的表,如果使用二叉樹來存儲,單獨訪問一個行可能需要 20 個 10 ms 的時間,這個查詢可真夠慢的!

③B 樹(Balanced Tree)多路平衡查找樹,多叉的

B 樹是一種多路自平衡搜索樹,它類似普通的二叉樹,但是 B 樹允許每個節點有更多的子節點。

B 樹示意圖如下:

B 樹的特點如下:

 

  • 所有鍵值分布在整個樹中。
  • 任何關鍵字出現且只出現在一個節點中。
  • 搜索有可能在非葉子節點結束。
  • 在關鍵字全集內做一次查找,性能逼近二分查找算法。

為了提升效率,要盡量減少磁盤 I/O 的次數。實際過程中,磁盤并不是每次嚴格按需讀取,而是每次都會預讀。

磁盤讀取完需要的數據后,會按順序再多讀一部分數據到內存中,這樣做的理論依據是計算機科學中注明的局部性原理:

  • 由于磁盤順序讀取的效率很高(不需要尋址時間,只需很少的旋轉時間),因此對于具有局部性的程序來說,預讀可以提高 I/O 效率。預讀的長度一般為頁(page)的整倍數。
  • MySQL(默認使用 InnoDB 引擎),將記錄按照頁的方式進行管理,每頁大小默認為 16K(可以修改)。

B-Tree 借助計算機磁盤預讀機制:每次新建節點的時候,都是申請一個頁的空間,所以每查找一個節點只需要一次 I/O;因為實際應用當中,節點深度會很少,所以查找效率很高。

那么最終版的 B+樹是如何做的呢?

④B+Tree (B+樹是 B 樹的變體,也是一種多路搜索樹)

從圖中也可以看到,B+樹與 B 樹的不同在于:

 

  • 所有關鍵字存儲在葉子節點,非葉子節點不存儲真正的 data,從而可以快速定位到葉子結點。
  • 為所有葉子節點增加了一個鏈指針,意味著所有的值都是按順序存儲的,并且每一個葉子頁到根的距離相同,很適合查找范圍數據。

因此,B+Tree 可以對 <,<=,=,>,>=,BETWEEN,IN,以及不以通配符開始的 LIKE 使用索引。

B+ 樹的優點,比較的次數均衡,減少了 I/O 次數,提高了查找速度,查找也更穩定:

  • B+樹的磁盤讀寫代價更低。
  • B+樹的查詢效率更加穩定。

要知道的是,你每次創建表,系統會為你自動創建一個基于 ID 的聚集索引(上述 B+樹),存儲全部數據。

你每次增加索引,數據庫就會為你創建一個附加索引(上述 B+樹),索引選取的字段個數就是每個節點存儲數據索引的個數,注意該索引并不存儲全部數據。

為什么 MySQL 索引選擇了 B+樹而不是 B 樹?

原因有如下兩點:

  • B+樹更適合外部存儲(一般指磁盤存儲),由于內節點(非葉子節點)不存儲 data,所以一個節點可以存儲更多的內節點,每個節點能索引的范圍更大更精確。也就是說使用 B+樹單次磁盤 I/O 的信息量相比較 B 樹更大,I/O 效率更高。
  • MySQL 是關系型數據庫,經常會按照區間來訪問某個索引列,B+樹的葉子節點間按順序建立了鏈指針,加強了區間訪問性,所以 B+樹對索引列上的區間范圍查詢很友好。而 B 樹每個節點的 key 和 data 在一起,無法進行區間查找。

程序員,你應該知道的索引知識點

①回表查詢

比如你創建了 name, age 索引 name_age_index,查詢數據時使用了:

  1. select * from table where name ='陳哈哈' and age = 26; 

由于附加索引中只有 name 和 age,因此命中索引后,數據庫還必須回去聚集索引中查找其他數據,這就是回表,這也是你背的那條:少用 select * 的原因。

②索引覆蓋

結合回表會更好理解,比如上述 name_age_index 索引,有查詢:

  1. select name, age from table where name ='陳哈哈' and age = 26; 

此時 select 的字段 name,age 在索引 name_age_index 中都能獲取到,所以不需要回表,滿足索引覆蓋,直接返回索引中的數據,效率高。是 DBA 同學優化時的首選優化方式。

③最左前綴原則

B+樹的節點存儲索引順序是從左向右存儲,在匹配的時候自然也要滿足從左向右匹配。

通常我們在建立聯合索引的時候,也就是對多個字段建立索引,相信建立過索引的同學們會發現,無論是 Oracle 還是 MySQL 都會讓我們選擇索引的順序。

比如我們想在 a,b,c 三個字段上建立一個聯合索引,我們可以選擇自己想要的優先級,a、b、c,或者是 b、a、c 或者是 c、a、b 等順序。

為什么數據庫會讓我們選擇字段的順序呢?不都是三個字段的聯合索引么?這里就引出了數據庫索引的最左前綴原理。

在我們開發中經常會遇到明明這個字段建了聯合索引,但是 SQL 查詢該字段時卻不會使用索引的問題。

比如索引 abc_index:(a,b,c)是 a,b,c 三個字段的聯合索引,下列 sql 執行時都無法命中索引 abc_index 的。

  1. select * from table where c = '1'
  2. select * from table where b ='1' and c ='2'

以下三種情況卻會走索引:

  1. select * from table where a = '1'
  2. select * from table where a = '1' and b = '2'
  3. select * from table where a = '1' and b = '2'  and c='3'

從上面兩個例子大家是否闊以看出點眉目?

是的,索引 abc_index:(a,b,c),只會在(a)、(a,b)、(a,b,c)三種類型的查詢中使用。

其實這里說的有一點歧義,其實(a,c)也會走,但是只走 a 字段索引,不會走 c 字段。

另外還有一個特殊情況說明下,下面這種類型的也只會有 a 與 b 走索引,c 不會走。

  1. select * from table where a = '1' and b > '2'  and c='3'

像上面這種類型的 sql 語句,在 a、b 走完索引后,c 已經是無序了,所以 c 就沒法走索引,優化器會認為還不如全表掃描 c 字段來的快。

最左前綴:顧名思義,就是最左優先,上例中我們創建了 a_b_c 多列索引,相當于創建了(a)單列索引,(a,b)組合索引以及(a,b,c)組合索引。

因此,在創建多列索引時,要根據業務需求,where 子句中使用最頻繁的一列放在最左邊。

④索引下推優化

還是索引 name_age_index,有如下 sql:

  1. select * from table where name like '陳%' and age > 26; 

該語句有兩種執行可能:

  • 命中 name_age_index 聯合索引,查詢所有滿足 name 以"陳"開頭的數據, 然后回表查詢所有滿足的行。
  • 命中 name_age_index 聯合索引,查詢所有滿足 name 以"陳"開頭的數據,然后順便篩出 age>20 的索引,再回表查詢全行數據。

顯然第 2 種方式回表查詢的行數較少,I/O 次數也會減少,這就是索引下推。所以不是所有 like 都不會命中索引。

使用索引時的注意事項

①索引不會包含有 null 值的列

只要列中包含有 null 值都將不會被包含在索引中,復合索引中只要有一列含有 null 值,那么這一列對于此復合索引就是無效的。所以我們在數據庫設計時建議不要讓字段的默認值為 null。

②使用短索引

對串列進行索引,如果可能應該指定一個前綴長度。

例如,如果有一個 char(255)的列,如果在前 10 個或 20 個字符內,多數值是惟一的,那么就不要對整個列進行索引。短索引不僅可以提高查詢速度而且可以節省磁盤空間和 I/O 操作。

③索引列排序

查詢只使用一個索引,因此如果 where 子句中已經使用了索引的話,那么 order by 中的列是不會使用索引的。

因此數據庫默認排序可以符合要求的情況下不要使用排序操作;盡量不要包含多個列的排序,如果需要最好給這些列創建復合索引。

④like 語句操作

一般情況下不推薦使用 like 操作,如果非使用不可,如何使用也是一個問題。like “%陳%” 不會使用索引而 like “陳%”可以使用索引。

⑤不要在列上進行運算

這將導致索引失效而進行全表掃描,例如:

  1. SELECT * FROM table_name WHERE YEAR(column_name)<2017; 

⑥不使用 not in 和 <> 操作

這不屬于支持的范圍查詢條件,不會使用索引。

我的體會

曾經,我一度以為我很懂 MySQL。

剛入職那年,我還是個孩子,記得第一個需求是做個統計接口,查詢近兩小時每隔 5 分鐘為一時間段的網站訪問量,JSONArray 中一共返回 24 個值,當時菜啊,寫了個接口循環二十四遍,發送 24 條 SQL 去查(捂臉)。

由于那個接口,被技術經理嘲諷表示他寫的 SQL 比我吃的米都多。雖然我們山東人基本不吃米飯,但我還是羞愧不已。

然后經理通過調用一個 dateTime 函數分組查詢處理一下,就 OK 了,效率是我的幾十倍吧。

從那時起,我就定下目標,深入 MySQL 學習,萬一日后有機會嘲諷回去?

筒子們,MySQL 路漫漫,其修遠兮。永遠不要眼高手低,一起加油,希望本文能對你有所幫助。

作者:陳哈哈

簡介:MySQL 社區的非著名貢獻者,善于白嫖知識;陪伴 MySQL 五年,致力于高性能 SQL、事務鎖優化方面的研究;長路漫漫,希望通過自己的分享讓大家少踩一些坑。我是陳哈哈,一個愛笑的程序員。

編輯:陶家龍

征稿:有投稿、尋求報道意向技術人請聯絡 editor@51cto.com

【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2021-03-09 07:37:42

技術Promise測試

2025-08-18 01:15:00

2019-07-15 16:35:43

MySQL索引阿里

2020-11-05 11:10:43

程序員開發工具

2019-08-13 09:29:14

Kafka運營數據

2020-08-13 10:15:34

MySQL數據庫面試

2025-10-20 04:00:00

2021-09-06 06:45:06

普通索引唯一

2011-11-28 09:48:01

編程建議語言

2023-07-12 13:29:44

2020-06-12 09:07:03

技術總監數據庫

2022-11-15 17:45:46

數據庫MySQL

2020-06-08 11:28:22

場景索引設計

2020-06-22 13:48:08

SQL查詢SELECT

2019-06-24 08:51:38

程序員網絡系統

2017-07-03 17:28:10

技術創業在路上白熊視頻程序員

2022-02-11 19:06:29

MySQL索引面試官

2025-07-28 02:44:00

閉包函數詞法

2025-03-27 10:13:03

2009-12-17 16:47:57

APC
點贊
收藏

51CTO技術棧公眾號

亚洲免费资源在线播放| 影音先锋成人在线电影| 在线视频中文字幕一区二区| 一区二区在线观看网站| 亚洲成人黄色片| 香蕉久久夜色精品| 中文字幕日韩欧美| 中文字幕欧美视频| 成人在线爆射| 亚洲欧美一区二区不卡| 农村寡妇一区二区三区| 国产视频一区二区三区四区五区| 99精品免费视频| 色伦专区97中文字幕| 熟妇人妻久久中文字幕| 日本欧美在线| 五月天欧美精品| 樱花www成人免费视频| 少妇精品高潮欲妇又嫩中文字幕 | 欧美区在线播放| 强伦人妻一区二区三区| 激情不卡一区二区三区视频在线| 第四色成人网| 亚洲第一精品自拍| 国产福利影院在线观看| 91桃色在线观看| 国产精品久久久久久久浪潮网站| 国产精品久久7| 亚洲在线精品视频| 久久狠狠一本精品综合网| 欧美激情第三页| eeuss中文字幕| 九一成人免费视频| 日韩av在线电影网| 激情综合激情五月| 欧美专区一区| 777a∨成人精品桃花网| 人人干人人干人人| 精品亚洲美女网站| 日韩欧美国产骚| 波多野结衣之无限发射| 影音先锋男人资源在线| 亚洲欧美综合另类在线卡通| 日本一区免费在线观看| 四虎成人免费在线| 99国产精品久久| 国内精品二区| 色wwwwww| 99久久久久久99| 黄色国产精品一区二区三区| 韩国中文字幕hd久久精品| 国产福利一区二区三区视频在线| 成人h视频在线| 中文字幕在线播放av| 奇米色777欧美一区二区| 国产aaa精品| 中文字幕免费视频观看| 奇米精品一区二区三区四区| 国产精品美女免费| 一级黄在线观看| 久久精品国产亚洲aⅴ| 国产一区二区丝袜高跟鞋图片| 中文字幕久久久久| 美国三级日本三级久久99| 国产区亚洲区欧美区| 亚洲专区在线播放| 加勒比av一区二区| 成人欧美一区二区三区视频 | 久久av一区| 日av在线播放中文不卡| 超碰在线免费97| 久久se这里有精品| 999视频在线免费观看| 丰满岳乱妇国产精品一区| www.日韩av| 欧美一区二区三区成人久久片 | 中文字幕日韩经典| 精东粉嫩av免费一区二区三区| 96久久精品| 神马久久久久| 国产精品毛片大码女人| 欧美交换配乱吟粗大25p| 超碰在线资源| 亚洲一区欧美一区| 久草精品在线播放| www.成人| 日韩av一区在线观看| 老司机精品免费视频| 国产一区二区中文| 国产99久久精品一区二区| 国产a级免费视频| 久久综合狠狠综合| 日本高清xxxx| 一本大道色婷婷在线| 欧美女孩性生活视频| 一边摸一边做爽的视频17国产 | 免费网站在线观看视频| 悠悠资源网亚洲青| 欧美日韩电影在线播放| 免费不卡的av| 欧美电影《睫毛膏》| 久久久久中文字幕| 在线观看国产小视频| 成人动漫视频在线| 一区二区三区四区在线视频| 理论不卡电影大全神| 欧美日本视频在线| 国产美女喷水视频| 国产一区清纯| 成人欧美一区二区三区黑人| 婷婷国产在线| 一区二区免费在线| 在线观看免费视频高清游戏推荐| 国产精品极品国产中出| 日韩小视频网址| 国产www在线| 成人精品视频一区二区三区尤物| 亚洲一二区在线| 亚洲精品国产精品国产| 精品粉嫩aⅴ一区二区三区四区| 免费成人深夜天涯网站| 国产精品日韩久久久| 国产 高清 精品 在线 a| 中文字幕在线免费| 日韩欧美在线视频日韩欧美在线视频 | 亚洲国产美女久久久久| 神马久久精品综合| 石原莉奈在线亚洲二区| 另类欧美小说| 98色花堂精品视频在线观看| 日韩欧美一区二区久久婷婷| 91n在线视频| 青青草精品视频| 日韩精品另类天天更新| 亚洲精品一区| 国产网站欧美日韩免费精品在线观看 | 国产欧美日韩专区发布| 你懂的在线播放| 天天操天天综合网| 国产精品麻豆入口| 亚洲国产一区二区三区a毛片| 91在线国产电影| 韩国av网站在线| 欧美精品在线观看一区二区| 国产农村妇女精品一区| 日韩不卡一区二区三区| 欧美日韩在线一区二区三区| 欧亚av在线| 欧美精品一区二区精品网| 激情综合五月网| 国产suv精品一区二区三区| 日韩一级特黄毛片| 97色成人综合网站| 韩国精品美女www爽爽爽视频| 亚洲av无码乱码在线观看性色| 亚洲男帅同性gay1069| 中文字幕一区二区三区四| 欧美在线免费| 国产91精品入口17c| 国产网红在线观看| 亚洲精品久久久久久下一站| 欧美videossex极品| 久久人人超碰精品| 蜜臀av免费观看| 五月开心六月丁香综合色啪 | 手机看片一级片| 99久久www免费| 91精品国产91久久久久青草| 欧美1—12sexvideos| 欧美精品一区视频| 无码人妻丰满熟妇精品区| 欧美韩国日本综合| 特黄特黄一级片| 99日韩精品| 午夜精品一区二区在线观看| japansex久久高清精品| 国产做受69高潮| 国产在线日本| 69久久夜色精品国产69蝌蚪网| 久久久精品国产sm调教| 97se亚洲国产综合在线| 尤物国产在线观看| 欧美日韩国产一区精品一区| 久久久久久亚洲精品不卡4k岛国| 91p九色成人| 欧美成人午夜激情视频| 视频一区二区在线播放| 一本色道久久综合亚洲精品按摩| 人妻互换一区二区激情偷拍| 丁香激情综合国产| 黄色免费网址大全| 欧美日韩一区二区国产| 欧美精品二区三区四区免费看视频 | www在线观看播放免费视频日本| 欧美精品一区二区三区一线天视频| 欧美亚韩一区二区三区| 中文字幕在线观看一区二区| 麻豆精品国产传媒av| 毛片av一区二区| 国产精品久久中文字幕| 欧美成人milf| 日本黑人久久| 国产欧美自拍一区| 成人精品视频99在线观看免费| av中文资源在线资源免费观看| 少妇激情综合网| 亚洲av成人精品一区二区三区在线播放 | 中文字幕日韩在线观看| 少妇一级淫片免费看| 717成人午夜免费福利电影| 日本一区二区免费电影| 亚洲一区二区不卡免费| 中国1级黄色片| 久久久精品蜜桃| av漫画在线观看| 精品一区二区av| 亚洲一二三区av| 国产婷婷精品| 欧洲精品在线播放| 中文字幕免费一区二区| 亚洲欧洲精品在线观看| 伊人春色之综合网| 久久96国产精品久久99软件| 亚洲国产一区二区三区网站| 91精品国产综合久久香蕉的用户体验 | 9色精品在线| 日本熟妇人妻xxxx| 中文精品久久| 日本福利视频导航| 欧美超碰在线| 亚洲精品一区二区毛豆| 精品国产一区二区三区四区| 免费精品视频一区| 欧美三级自拍| 精品无人乱码一区二区三区的优势| 视频一区日韩| 99国产在线| 一区二区三区四区精品视频| 成人午夜在线视频一区| 一级欧美视频| 成人免费视频网址| 亚洲色图综合| 亚洲aa中文字幕| 日韩精品一区二区三区中文字幕 | 欧美成人黄色网址| 日韩国产欧美视频| 亚洲三级视频网站| 蜜臀av一区二区在线观看| 91色国产在线| 久久精品国产99久久6| 亚洲美女性囗交| 国产综合色在线| 一级做a爱视频| 国产精品一级黄| 热久久久久久久久| 国产经典欧美精品| 亚洲免费观看在线| www.久久久久久久久| 国产乱了高清露脸对白| 91视频观看免费| 老熟妇一区二区| 亚洲国产精品黑人久久久| 国产中文字幕一区二区| 久久久精品欧美丰满| 国产三级在线观看完整版| 亚洲天堂精品在线观看| 永久看片925tv| 亚洲一区二区欧美| 欧美日韩一级黄色片| 欧美性猛片xxxx免费看久爱| 91成人国产综合久久精品| 日韩一区二区三区视频| 日韩在线观看视频网站| 精品亚洲一区二区| 91青青在线视频| 欧美猛交免费看| 碰碰在线视频| 国产欧美日韩专区发布| 国产一级成人av| 日韩.欧美.亚洲| 艳女tv在线观看国产一区| 霍思燕三级露全乳照| 久久婷婷久久| 在线播放av中文字幕| 成人免费看的视频| 亚洲ⅴ国产v天堂a无码二区| 亚洲乱码中文字幕| 国产精品视频免费播放| 欧美老女人在线| 色综合视频在线| 色阁综合伊人av| 夜夜嗨av色综合久久久综合网| 日韩综合第一页| 26uuu成人网一区二区三区| 超薄肉色丝袜一二三| 亚洲特黄一级片| 日韩xxx高潮hd| 欧美偷拍一区二区| 亚洲狼人综合网| 一区二区在线视频播放| 污片在线免费观看| 国产精品第8页| 日韩中文字幕一区二区高清99| 久久国产精品-国产精品| 日本久久综合| 国产原创中文在线观看| 狠狠色狠狠色合久久伊人| 老司机福利av| 一区二区国产视频| 怡春院在线视频| 日韩精品视频在线播放| 午夜精品久久一牛影视| 国产在线一区二| 日韩精品乱码久久久久久| 欧美午夜性色大片在线观看| 国产特黄一级片| 国产一区二区三区视频在线观看 | 亚洲乱码日产精品bd在线观看| 美女爽到呻吟久久久久| 日韩精品国产一区| 亚洲欧洲精品一区二区三区不卡| 波多野结衣啪啪| 亚洲精品v欧美精品v日韩精品| 最新av在线播放| 国产免费亚洲高清| 欧美丝袜丝交足nylons172| 大j8黑人w巨大888a片| 国产精品一区二区91| 91麻豆精品成人一区二区| 欧美综合一区二区三区| 女人偷人在线视频| 欧美在线一区二区三区四| 美腿丝袜亚洲图片| 欧美一区二区三区综合| 国产成人精品综合在线观看| 手机av在线看| 欧美二区在线观看| 九七电影韩国女主播在线观看| 国产精品三级在线| 不卡在线一区| 午夜激情av在线| 国产精品午夜久久| 日韩欧美一级大片| 中文字幕视频在线免费欧美日韩综合在线看 | 欧美亚洲午夜视频在线观看| 国产伦理久久久久久妇女| 蜜臀av无码一区二区三区| 成人动漫在线一区| 天天综合网入口| 亚洲精品网站在线播放gif| 中文在线а√在线8| 久久精品人成| 日韩中文字幕区一区有砖一区| 日韩一级视频在线观看| 欧美性jizz18性欧美| 成人在线免费公开观看视频| 国产精品美女免费| 99久久精品网站| 国产91在线免费观看| 亚洲午夜激情网页| 色一情一乱一区二区三区| 欧美一级电影久久| 国产精品午夜一区二区三区| 五月天激情视频在线观看| 亚洲欧洲成人av每日更新| 午夜精品在线播放| 2019中文字幕免费视频| 国产一区二区观看| 第一区免费在线观看| 一区二区三区小说| 青春草在线观看| 国产日韩欧美在线看| 欧美区亚洲区| 日韩在线免费观看av| 欧美日韩激情一区| 国产91足控脚交在线观看| 欧美国产二区| 久久成人久久鬼色| 久久精品国产亚洲av麻豆色欲| 精品亚洲一区二区| 综合久草视频| 可以在线看的av网站| 欧美激情在线一区二区三区| 精品国产18久久久久久| 久久成人羞羞网站| 日本免费高清一区| 麻豆精品在线播放| 日韩理论片在线观看| 老司机精品导航| 91精品国产闺蜜国产在线闺蜜| 日韩欧美一级精品久久| 2022成人影院| mm131午夜| 久久精品在这里| 国产99对白在线播放| 国产成人精品视频| 欧美另类综合| 性少妇xx生活| 亚洲国产精品999| 99精品国产九九国产精品|