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

再有人問(wèn)你MySQL索引原理,就把這篇文章甩給他!

數(shù)據(jù)庫(kù) MySQL
索引,可能讓好很多人望而生畏,畢竟每次面試時(shí)候 MySQL 的索引一定是必問(wèn)內(nèi)容,哪怕先撇開(kāi)面試,就在平常的開(kāi)發(fā)中,對(duì)于 SQL 的優(yōu)化也而是重中之重。

 索引,可能讓好很多人望而生畏,畢竟每次面試時(shí)候 MySQL 的索引一定是必問(wèn)內(nèi)容,哪怕先撇開(kāi)面試,就在平常的開(kāi)發(fā)中,對(duì)于 SQL 的優(yōu)化也而是重中之重。

[[382918]]

可以毫不夸張的說(shuō),系統(tǒng)中 SQL 的好壞,是能直接決定你系統(tǒng)的快慢的。但是在優(yōu)化之前大家是否想過(guò)一個(gè)問(wèn)題?那就是:我們優(yōu)化的原則是什么?優(yōu)化SQL的理論基礎(chǔ)是什么?

雖然說(shuō)實(shí)踐出真知,但是我更相信理論是支撐實(shí)踐的基礎(chǔ),因?yàn)槲覀儾豢赡芎翢o(wú)目的的去盲目的實(shí)踐,因?yàn)檫@樣往往事倍功半。

所以說(shuō)了這么多只想告訴大家,在真正的開(kāi)始索引優(yōu)化之前,我們需要徹底搞明白索引的原理。這樣再談優(yōu)化你將覺(jué)得更絲滑~

1、索引的本質(zhì)

索引的本質(zhì)是一種排好序的數(shù)據(jù)結(jié)構(gòu)。這個(gè)我相信其實(shí)大家并不陌生,因?yàn)檎劦剿饕芏嗳俗匀欢坏木蜁?huì)聯(lián)想到字典中的目錄。

沒(méi)錯(cuò),這樣的類比是很形象的,但是如果再往深處說(shuō),恐怕很多小伙伴就有點(diǎn)張口結(jié)舌了,那既然你已經(jīng)知道了索引的本質(zhì),那么您就已經(jīng)有了看這篇文章的基礎(chǔ),相信讀文本文的你,一定會(huì)對(duì)索引的原理有一個(gè)全新的了解。

2、索引的分類

在數(shù)據(jù)庫(kù)中,索引是分很多種類的(千萬(wàn)不要狹隘的認(rèn)為索引只有 B+ 樹(shù),那是因?yàn)槲覀兤綍r(shí)使用的基本都是 MySQL)。而不同的種類很顯然是為了應(yīng)付不同的場(chǎng)合,那索引到底有那些種類呢?下面就讓我們來(lái)大致的了解下。

2.1、Hash 索引

Hash 索引是比較常見(jiàn)的一種索引,他的單條記錄查詢的效率很高,時(shí)間復(fù)雜度為1。但是,Hash索引并不是最常用的數(shù)據(jù)庫(kù)索引類型,尤其是我們常用的Mysql Innodb引擎就是不支持hash索引的。主要有以下原因:

  • Hash索引適合精確查找,但是范圍查找不適合

* 因?yàn)榇鎯?chǔ)引擎都會(huì)為每一行計(jì)算一個(gè)hash碼,hash碼都是比較小的,并且不同鍵值行的hash碼通常是不一樣的,hash索引中存儲(chǔ)的就是Hash碼,hash 碼彼此之間是沒(méi)有規(guī)律的,且 Hash 操作并不能保證順序性,所以值相近的兩個(gè)數(shù)據(jù),Hash值相差很遠(yuǎn),被分到不同的桶中。這就是為什么hash索引只能進(jìn)行全職匹配的查詢,因?yàn)橹挥羞@樣,hash碼才能夠匹配到數(shù)據(jù)。

對(duì)于 hash 索引,小伙伴們只需要了解到這里就可以了。

2.2、二叉樹(shù)

另外,常見(jiàn)的索引使用的數(shù)據(jù)結(jié)構(gòu)是樹(shù)結(jié)構(gòu),首先我們來(lái)介紹下最經(jīng)典的二叉樹(shù)。先來(lái)介紹下二叉樹(shù)的特點(diǎn):

  • 二叉樹(shù)的時(shí)間復(fù)雜度為 O(n)
  • 一個(gè)節(jié)點(diǎn)只能有兩個(gè)子節(jié)點(diǎn)。即度不超過(guò)2
  • 左子節(jié)點(diǎn) 小于 本節(jié)點(diǎn),右子節(jié)點(diǎn) 大于 本節(jié)點(diǎn)

首先來(lái)看一下二叉樹(shù)的樣子

 

 

 

但是在極端情況下會(huì)出現(xiàn)鏈化的情況,即節(jié)點(diǎn)一直在某一邊增加。如下圖

 

 

 

二叉樹(shù)中,有一種特殊的結(jié)構(gòu)——平衡二叉樹(shù),平衡二叉樹(shù)的特點(diǎn):

  • 根節(jié)點(diǎn)會(huì)隨著數(shù)據(jù)的改變而變更
  •  數(shù)據(jù)量越多,遍歷次數(shù)越多,IO次數(shù)就越多,就越慢(磁盤的IO由樹(shù)高決定)

2.4、B樹(shù)(二三樹(shù))

了解了二叉樹(shù)之后,可以進(jìn)一步談一下什么是B樹(shù)了。B 樹(shù)大概是這樣子的:

 

 

 

從B樹(shù)的結(jié)構(gòu)圖中可以看到每個(gè)節(jié)點(diǎn)中不僅包含數(shù)據(jù)的 key 值,還有 data 值。而每頁(yè)的存儲(chǔ)空間是有限的,如果 data 比較大,會(huì)導(dǎo)致每個(gè)節(jié)點(diǎn)的 key 存儲(chǔ)的較少,當(dāng)數(shù)據(jù)量較大的時(shí)候,同樣會(huì)導(dǎo)致B樹(shù)很深,從而增加了磁盤 IO 的次數(shù),進(jìn)而影響查詢效率。好了,說(shuō)到這里,常見(jiàn)的索引的種類也說(shuō)完了,上面的內(nèi)容僅僅是作為一個(gè)鋪墊,下面我們正式開(kāi)始 MySQL 的 B+ 樹(shù)。

 

2.5、B+樹(shù)

MySQL 中最常用的索引的數(shù)據(jù)結(jié)構(gòu)是 B+ 樹(shù),他有以下特點(diǎn):

  1. 在 B+ 樹(shù)中,所有數(shù)據(jù)記錄節(jié)點(diǎn)都是按照鍵值的大小存放在同一層的葉子節(jié)點(diǎn)上,而非葉子結(jié)點(diǎn)只存儲(chǔ)key的信息,這樣可以大大減少每個(gè)節(jié)點(diǎn)的存儲(chǔ)的key的數(shù)量,降低B+ 樹(shù)的高度
  2. B+ 樹(shù)葉子節(jié)點(diǎn)的關(guān)鍵字從小到大有序排列,左邊結(jié)尾數(shù)據(jù)都會(huì)保存右邊節(jié)點(diǎn)開(kāi)始數(shù)據(jù)的指針。
  3. B+ 樹(shù)的層級(jí)更少:相較于 B 樹(shù) B+ 每個(gè)非葉子節(jié)點(diǎn)存儲(chǔ)的關(guān)鍵字?jǐn)?shù)更多,樹(shù)的層級(jí)更少所以查詢數(shù)據(jù)更快
  4. B+ 樹(shù)查詢速度更穩(wěn)定:B+ 所有關(guān)鍵字?jǐn)?shù)據(jù)地址都存在葉子節(jié)點(diǎn)上,所以每次查找的次數(shù)都相同所以查詢速度要比B樹(shù)更穩(wěn)定;
  5. B+ 樹(shù)天然具備排序功能:B+ 樹(shù)所有的葉子節(jié)點(diǎn)數(shù)據(jù)構(gòu)成了一個(gè)有序鏈表,在查詢大小區(qū)間的數(shù)據(jù)時(shí)候更方便,數(shù)據(jù)緊密性很高,緩存的命中率也會(huì)比B樹(shù)高。
  6. B+ 樹(shù)全節(jié)點(diǎn)遍歷更快:B+ 樹(shù)遍歷整棵樹(shù)只需要遍歷所有的葉子節(jié)點(diǎn)即可,,而不需要像 B 樹(shù)一樣需要對(duì)每一層進(jìn)行遍歷,這有利于數(shù)據(jù)庫(kù)做全表掃描。

好了說(shuō)了這么多的 B+ 樹(shù)的特點(diǎn),我們來(lái)張圖看看 B+ 樹(shù)到底長(zhǎng)什么樣子(如果看不懂,也沒(méi)有關(guān)系,下文會(huì)一步一步解釋說(shuō)明的)

 

 

 

上面的數(shù)據(jù)頁(yè)就是實(shí)際存放數(shù)據(jù)頁(yè)的地方,且數(shù)據(jù)頁(yè)之間是通過(guò)雙向鏈表進(jìn)行連接的,好了到這里我們就將各個(gè)索引的類型快速了解了下,下面我們就開(kāi)始正式B+樹(shù)的分析。

3、主鍵目錄

我們將上圖中的數(shù)據(jù)頁(yè)拿出來(lái)再細(xì)化下,就成了下面的這張圖

 

 

 

我們都知道 MySQL 在存儲(chǔ)數(shù)據(jù)的時(shí)候是以數(shù)據(jù)頁(yè)為最小單位的,且數(shù)據(jù)在數(shù)據(jù)頁(yè)中的存儲(chǔ)是連續(xù)的,數(shù)據(jù)頁(yè)中的數(shù)據(jù)是按照主鍵排序的(沒(méi)有主鍵是由 MySQL自己維護(hù)的 ROW_ID 來(lái)排序的),數(shù)據(jù)頁(yè)和數(shù)據(jù)頁(yè)之間是通過(guò)雙向鏈表來(lái)關(guān)聯(lián)的,數(shù)據(jù)與數(shù)據(jù)時(shí)間是通過(guò)單向鏈表來(lái)關(guān)聯(lián)的。

也就是說(shuō)有一個(gè)在每個(gè)數(shù)據(jù)頁(yè)中,他必然就有一個(gè)最小的主鍵,然后每個(gè)數(shù)據(jù)頁(yè)的頁(yè)號(hào)和最小的主鍵會(huì)組成一個(gè)主鍵目錄(就像上圖中的左邊部分),假設(shè)現(xiàn)在要查找主鍵為 2 的數(shù)據(jù),通過(guò)二分查找法最后確定下主鍵為 2 的記錄在數(shù)據(jù)頁(yè) 1 中,此時(shí)就會(huì)定位到數(shù)據(jù)頁(yè) 1 接著再去定位主鍵為 2 的記錄,我們先知道大致的流程,細(xì)節(jié)先不要深究,先從宏觀看結(jié)構(gòu)原理,再到微觀看實(shí)現(xiàn)原理。

剛剛上面是說(shuō)的其實(shí)可以理解為是主鍵索引,主鍵索引也是最簡(jiǎn)單的最基礎(chǔ)的索引。這個(gè)時(shí)候大家應(yīng)該知道為什么你建立了主鍵查詢就能變快了吧?

4、索引頁(yè)

但是現(xiàn)在假設(shè)有很多很多的是數(shù)據(jù)頁(yè),那是不是對(duì)應(yīng)的主鍵目錄會(huì)很大很大呢?那假設(shè)有1000萬(wàn)條記錄、5000萬(wàn)條記錄呢?是不是就算是二分法查找,其效率也依舊是很低的,所以為了解決這種問(wèn)題MySQL 又設(shè)計(jì)出了一種新的存儲(chǔ)結(jié)構(gòu)—索引頁(yè)。例如有下面這樣情況,

 

 

 

 

假設(shè)上面的主鍵目錄中的記錄是非常非常多的,此時(shí)上面的結(jié)構(gòu)是演變成這樣子的,MySQL 會(huì)將里面的記錄拆分到不同的索引頁(yè)中,也就是下面這樣子的

 

 

 

索引頁(yè)中記錄的是每頁(yè)數(shù)據(jù)頁(yè)的頁(yè)號(hào)和該數(shù)據(jù)頁(yè)中最小的主鍵的記錄,也就是說(shuō)最小主鍵和數(shù)據(jù)頁(yè)號(hào)不是單純的維護(hù)在主鍵目錄中了,而是演變成了索引頁(yè),索引頁(yè)和數(shù)據(jù)頁(yè)類似,一張不夠存就分裂到下一張。

假如現(xiàn)在要查找 id=20 的這條記錄,咦?那我應(yīng)該到哪個(gè)索引頁(yè)中查找該條記錄呢?所以這個(gè)時(shí)候肯定是需要去維護(hù)索引頁(yè)的。

沒(méi)錯(cuò),MySQL 也是這么設(shè)計(jì)的,也就是說(shuō) MySQL 同時(shí)也設(shè)計(jì)出了用于維護(hù)索引頁(yè)的數(shù)據(jù)結(jié)構(gòu),其實(shí)也還叫索引頁(yè),只不過(guò)他們是在不同的層級(jí),類似下面這樣子的:

 

 

 

也就是說(shuō)維護(hù)索引頁(yè)的索引頁(yè)是在真正存儲(chǔ)記錄和數(shù)據(jù)頁(yè)的索引頁(yè)的上一層,現(xiàn)在如果你想查找 id=20 的這條記錄,那就是從最上層的索引頁(yè)開(kāi)始查找,通過(guò)二分法查找,很快就能夠定位到 id=20 s這條記錄是在索引頁(yè) 2 上,然后到就索引頁(yè) 2 上面查找,接著就是和之前一樣了(注意,索引頁(yè)中的記錄也是通過(guò)單向鏈表連接的),根據(jù)各個(gè)最小的主鍵能夠定位到 id=20 是在數(shù)據(jù)頁(yè)5上,假設(shè)數(shù)據(jù)頁(yè)5是這樣子的

 

 

 

那這個(gè)時(shí)候你是不是能夠想明白數(shù)據(jù)是怎么定位的了呢?

5、索引頁(yè)的分層

好,既然你已經(jīng)知道到索引頁(yè)太多會(huì)往上一層擴(kuò)散,那現(xiàn)在假設(shè)上一層的索引頁(yè)記錄也太多了,那該怎么辦?很簡(jiǎn)單,繼續(xù)分裂,再往上一層繼續(xù),不廢話,我來(lái)畫(huà)圖幫助大家理解

 

 

 

我看明白了,你看明白了嗎?我們來(lái)模擬一個(gè)查找的過(guò)程,假設(shè)你要查找 37 這條記錄,說(shuō)實(shí)話我根本不知道這條記錄在哪里。好,現(xiàn)在我們就來(lái)模擬 MySQL 的查找過(guò)程,首先從最頂層的索引頁(yè)開(kāi)始查找,因?yàn)?id=37,因此定位到了索引頁(yè)16,然后到索引頁(yè) 16 中繼續(xù)查找,此時(shí)同樣能夠定位到 id=37 在索引頁(yè) 3 中,然后繼續(xù)查找,最終能夠定位到數(shù)據(jù)實(shí)在數(shù)據(jù)頁(yè) 8 中,假設(shè)數(shù)據(jù)頁(yè) 8 是這樣子的

 

 

 

是不是很完美?如果非要我把上面的圖畫(huà)完整,那….小弟義不容辭(圖太大了,索引頁(yè)中數(shù)據(jù)的鏈表結(jié)構(gòu)就不畫(huà)出來(lái)了)

 

 

 

這個(gè)時(shí)候機(jī)智的你是不是已經(jīng)發(fā)現(xiàn)了什么小秘密?他是不是很像一顆二叉樹(shù)?實(shí)際上這就是一顆 B+ 樹(shù)的結(jié)構(gòu),這也是數(shù)據(jù)在磁盤中真正存儲(chǔ)的物理結(jié)構(gòu)。B+樹(shù)的特性是什么呢?B+樹(shù),也是二叉搜索樹(shù)的一種,但是他的數(shù)據(jù)僅僅存儲(chǔ)在葉子節(jié)點(diǎn)(在這里就是數(shù)據(jù)頁(yè)),像這種索引頁(yè)+數(shù)據(jù)頁(yè)組成的組成的B+樹(shù)就是聚簇索引(這句話很重要)。

聚簇索引是 MySQL 基于主鍵索引結(jié)構(gòu)創(chuàng)建的

6、非主鍵索引

但是現(xiàn)在問(wèn)題又來(lái)了,既然這里強(qiáng)調(diào)的是主鍵索引,那我們平時(shí)開(kāi)發(fā)中除了主鍵索引其他的索引也用的不少,這時(shí)候該怎么辦?假設(shè)你現(xiàn)在 對(duì)name、age建立索引。現(xiàn)在回顧下主鍵索引,是不是在插入數(shù)據(jù)的時(shí)候基于主鍵的順序去維護(hù)一個(gè) B+ 樹(shù)的?

而實(shí)際上非主鍵索引其原理是一樣的,MySQL 都是去維護(hù)一顆 B+ 樹(shù),說(shuō)白了,你建立多少個(gè)索引,MySQL 就會(huì)幫你維護(hù)多少的B+樹(shù)(這下是不是也突然想明白了為什么索引不能建立太多了?以前就知道不能建立太多索引,因?yàn)樗饕矔?huì)占用空間,實(shí)際上這就是根本原因)

假如現(xiàn)在真的對(duì) name+age 建立索引,那此時(shí)是存放的呢?此時(shí) MySQL 根據(jù)會(huì) name+age 維護(hù)一個(gè)單獨(dú)的 B+ 樹(shù)結(jié)構(gòu),數(shù)據(jù)依舊是存放在數(shù)據(jù)頁(yè)中的,只不過(guò)是原來(lái)數(shù)據(jù)中的每條記錄寫的是 id=xx,現(xiàn)在寫的是name=xx,age=xx,id=xx,不管怎么樣,主鍵肯定會(huì)存放的,先來(lái)張圖壓壓驚

 

 

 

在插入數(shù)據(jù)的時(shí)候,MySQL 首先會(huì)根據(jù) name 進(jìn)行排序,如果 name 一樣,就根據(jù)聯(lián)合索引中的 age 去排序,如果還一樣,那么就會(huì)根據(jù) 主鍵 字段去排序。插入的原理就是這樣子的。

此時(shí)每個(gè)數(shù)據(jù)頁(yè)中的記錄存放的實(shí)際是索引字段和主鍵字段,而其他字段是不存的(為什么不存放?一樣的數(shù)據(jù)到處存放很浪費(fèi)空間的,也沒(méi)必要,所以才會(huì)有下面的索引優(yōu)化),至于查找,原理和過(guò)程跟聚簇索引一樣,這里就不再贅述,但是,下面說(shuō)的內(nèi)容卻是至關(guān)重要的:假設(shè)現(xiàn)在執(zhí)行這樣的SQL:

 

  1. SELECT name FROM student WHERE name='wx' 

那么此時(shí)的查詢是完美的,使用到了索引且不需要回表

7.回表

是這樣子的,現(xiàn)在要根據(jù) name 查找到該條記錄,且查詢的字段(即 select 后面的查詢字段)也僅僅有 name(只要是在 name,age,id 這三個(gè)字段中都可以)這個(gè)時(shí)候是能夠直接獲取到最終的記錄的

換句話說(shuō),因?yàn)槁?lián)合索引中的記錄也僅僅有 name,age,id,所以在查詢的如果也僅僅查詢這三個(gè)字段,那么在該B+樹(shù)中就能夠查詢到想要的結(jié)果了。那現(xiàn)在假設(shè)查詢的 SQL 是這樣子的(我們假設(shè) student 中還有除了name,age,id 其他的字段 )

 

  1. SELECT * FROM student WHERE name='wx' 

那這下子就完蛋了,因?yàn)槟悻F(xiàn)在雖然根據(jù) name 很快的定位到了該條記錄,但是因?yàn)?name+age 不是聚簇索引,此時(shí)的 B+ 樹(shù)的數(shù)據(jù)頁(yè)中存放的僅僅是自己關(guān)聯(lián)的索引和主鍵索引字段,并不會(huì)存其他的字段,所以這個(gè)時(shí)候其他的屬性值是獲取不到的,這時(shí)候該怎么辦?

這種情況下,MySQL 就需要進(jìn)行回表查詢了。此時(shí) MySQL 就會(huì)根據(jù)定位到的某條記錄中的 id 再次進(jìn)行聚簇索引查找,也就是說(shuō)會(huì)根據(jù) id 去維護(hù) id 的那么 B+ 樹(shù)中查找。因?yàn)榫鄞厮饕袛?shù)據(jù)頁(yè)記錄的是一條記錄的完整的記錄,這個(gè)過(guò)程就叫回表。

再?gòu)?qiáng)調(diào)下回表的含義:根據(jù)非主鍵索引查詢到的結(jié)果并沒(méi)有查找的字段值,此時(shí)就需要再次根據(jù)主鍵從聚簇索引的根節(jié)點(diǎn)開(kāi)始查找,這樣再次查找到的記錄才是完成的。

最后,讓我一起看下 MySQL 對(duì)于非主鍵索引的維護(hù)過(guò)程:

對(duì)于非主鍵索引(一般都是聯(lián)合索引),在維護(hù) B+ 樹(shù)的時(shí)候,會(huì)根據(jù)聯(lián)合索引的字段依次去判斷,假設(shè)聯(lián)合索引為:name + address + age,那么 MySQL 在維護(hù)該索引的 B+ 樹(shù)的時(shí)候,首先會(huì)根據(jù) name 進(jìn)行排序,name 相同的話會(huì)根據(jù)第二個(gè) address 排序,如果 address 也一樣,那么就會(huì)根據(jù) age 去排序,如果 age 也一樣,那么就會(huì)根據(jù)主鍵字段值去排序,且對(duì)于非主鍵索引,MySQL 在維護(hù) B+ 樹(shù)的時(shí)候,僅僅是維護(hù)索引字段和主鍵字段。

責(zé)任編輯:華軒 來(lái)源: Hollis
相關(guān)推薦

2018-08-07 16:01:32

synchronizevolatilefinal

2022-09-26 10:09:08

MVCC控制并發(fā)

2021-03-08 10:25:37

MySQL數(shù)據(jù)庫(kù)索引

2020-12-11 08:23:06

JavaMemory Mode內(nèi)存模型

2018-07-03 14:54:25

Java內(nèi)存模型

2021-03-08 12:47:42

MySQL查詢數(shù)據(jù)

2022-11-08 09:33:36

訂單系統(tǒng)電商

2018-12-07 09:31:52

分布式鎖服務(wù)框架分布式系統(tǒng)

2021-05-31 09:42:48

MySQL隔離級(jí)別

2023-12-11 08:32:58

數(shù)據(jù)庫(kù)DruidDBA

2020-04-20 13:11:21

HashMap底層存儲(chǔ)

2019-11-05 14:06:07

MySQLB+索引

2019-11-04 15:00:50

MySQL索引B+樹(shù)

2022-05-23 09:41:27

分庫(kù)分表數(shù)據(jù)庫(kù)算法

2022-10-21 16:39:56

JDK優(yōu)化

2019-09-19 14:03:32

B樹(shù)節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)

2019-12-10 09:08:29

分布式開(kāi)源RocketMQ

2019-04-15 14:40:46

消息隊(duì)列Java編程

2020-12-21 14:58:25

分布式性能系統(tǒng)

2020-04-28 09:15:58

HashMapJava數(shù)組
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产女同互慰高潮91漫画| 99综合视频| 欧美色老头old∨ideo| 一区二区三区四区五区视频| av av片在线看| 狠狠色丁香久久综合频道| 日韩电影中文字幕在线观看| 久草在在线视频| 欧美性天天影视| 久久电影网电视剧免费观看| 久久69精品久久久久久久电影好| 一区二区免费在线观看视频| 日本一区二区三区视频在线| 亚洲色图20p| 蜜桃导航-精品导航| 夜夜躁很很躁日日躁麻豆| 亚洲视频中文| 中文字幕欧美在线| 国产人妻精品午夜福利免费| 欧美日韩视频免费观看| 亚洲精品视频一区| 裸模一区二区三区免费| 99精品免费观看| 久久不射网站| 色综合男人天堂| 国产精品久久久久久久av| 成人在线视频你懂的| 欧美色网站导航| 国产97在线 | 亚洲| 久热国产在线| 国产丝袜在线精品| 国产精品污www一区二区三区| 中文字幕日韩第一页| 99国产精品| 久久国产精品久久久久久久久久 | 欧美日韩国产三区| 国产熟女一区二区丰满| 奇米777欧美一区二区| 久久久久久香蕉网| www.av免费| 成人毛片在线| 亚洲美女视频网站| 一区二区免费在线观看视频| 日韩精品中文字幕一区二区 | 午夜精品久久久久久久99热浪潮 | 国产精品成人v| 亚洲国产成人精品激情在线| 欧美精品一线| 久久视频免费观看| 东京热无码av男人的天堂| 台湾佬综合网| 亚洲国产精品99| 色欲欲www成人网站| 久久免费福利| 日韩欧美激情四射| 最好看的中文字幕| 豆花视频一区| 欧美一区二区三区视频在线观看| 日韩av自拍偷拍| 成人51免费| 欧美一二三在线| 黑人无套内谢中国美女| 韩国一区二区三区视频| 91精品久久久久久蜜臀| www.成人黄色| 亚洲成人五区| 精品三级在线看| 女人扒开双腿让男人捅| 成人爽a毛片| 日韩av影片在线观看| 911亚洲精选| 日韩极品少妇| 亚洲天堂免费视频| 国精产品一区一区三区免费视频| 亚洲视频分类| 亚洲三级免费看| 欧美亚洲色综久久精品国产| 99精品美女| 欧美黄色小视频| 亚欧洲精品在线视频| 最新亚洲一区| 国产91色在线|| 亚洲永久精品视频| 国产精品一二三| 狠狠干一区二区| 成人性爱视频在线观看| 中文字幕一区二区三区在线播放| 老汉色影院首页| 国产伦子伦对白在线播放观看| 黑人极品videos精品欧美裸| 国产九九在线观看| 成人污污视频| 日韩av在线不卡| 亚洲女人毛茸茸高潮| 欧美啪啪一区| 日韩美女av在线免费观看| 亚洲专区在线播放| 北岛玲一区二区三区四区| 美媛馆国产精品一区二区| www.国产精品.com| 亚洲精品伦理在线| 999精品网站| 国产一区一区| 亚洲欧美精品一区| 99久久婷婷国产综合| 亚洲欧美日韩国产一区| 国产一区二中文字幕在线看| 日本精品一区二区在线观看| 中文字幕不卡的av| 17c丨国产丨精品视频| 天堂久久午夜av| 精品国产一区二区三区忘忧草| 一色道久久88加勒比一| 欧美日韩mv| 国产精品视频资源| 香蕉视频国产在线| 亚洲免费大片在线观看| 97公开免费视频| 久久99精品久久久久久欧洲站| 色婷婷av一区二区三区在线观看| 日韩手机在线观看| 国内精品久久久久影院一蜜桃| 蜜桃av噜噜一区二区三区| 日本伦理一区二区| 欧美日韩高清一区| 亚洲AV无码国产成人久久| 国产精品大片| 91牛牛免费视频| sese在线视频| 欧美视频精品一区| 久久国产劲爆∧v内射| 99久久激情| 国产成人免费91av在线| 国产成人三级在线观看视频| 国产精品成人免费| 成人性生生活性生交12| 亚洲人成网www| 国外视频精品毛片| 亚洲国产综合一区| 怡红院av一区二区三区| 在线观看日本www| 日韩在线观看| 国产精品pans私拍| 男同在线观看| 欧美香蕉大胸在线视频观看| 国产污在线观看| 国产精品va| aa成人免费视频| 51xtv成人影院| 制服丝袜激情欧洲亚洲| 手机在线中文字幕| 精品一区二区三区不卡| 亚洲综合首页| 少妇高潮一区二区三区99| 综合久久五月天| 一级黄色片网站| 自拍偷拍欧美激情| 午夜精品免费看| 91精品啪在线观看国产81旧版| 成人久久久久爱| 国产在线高清理伦片a| 在线播放欧美女士性生活| 欧美a级片免费看| 国产曰批免费观看久久久| 熟女视频一区二区三区| 精品国产一区二| 欧美激情一级精品国产| 天堂在线视频网站| 精品人伦一区二区三区蜜桃网站| 中文字幕日韩三级片| 久久精品动漫| 一本久道久久综合狠狠爱亚洲精品| 日本午夜免费一区二区| 久久99热精品这里久久精品| 老司机午夜福利视频| 精品国产成人av| 日韩中文字幕有码| 国内精品自线一区二区三区视频| 精品人妻大屁股白浆无码| 欧美日韩看看2015永久免费 | 欧美日韩午夜爽爽| 91精品国产自产在线丝袜啪| 88国产精品欧美一区二区三区| 国产原创av在线| 亚洲午夜免费| 精品999久久久| 国产午夜免费福利| 国产精品视频观看| 佐山爱在线视频| 国产日韩亚洲| 亚洲欧洲一区二区| www.神马久久| 欧美乱妇一区二区三区不卡视频| 成人福利视频网| 日本中文字幕伦在线观看| 日韩美一区二区三区| 日韩精品一区二区亚洲av| 国产精品久久国产精麻豆99网站 | 国产午夜亚洲精品一级在线| 午夜精品三级视频福利| porn亚洲| 日韩成人在线电影网| 中文字幕精品一区二区精| 一区二区日韩电影| 国产18无套直看片| av中文字幕一区| 亚洲一区日韩精品| 99在线热播精品免费99热| 正在播放91九色| 青青草原在线亚洲| 91在线观看免费高清| 在线毛片观看| 欧美极品在线播放| 网友自拍视频在线| 亚洲精品日韩在线| www.国产精品视频| 欧美性淫爽ww久久久久无| 精品无码久久久久| 亚洲欧洲在线观看av| 午夜理伦三级做爰电影| 大美女一区二区三区| 日韩在线不卡一区| 久久精品女人| 大陆av在线播放| 亚洲国产日韩欧美在线| 色就是色欧美| 国产欧美一区二区精品久久久| 国产精品xxxx| 一区二区网站| 亚洲在线免费看| 久久日本片精品aaaaa国产| 欧美一级片一区| segui88久久综合9999| 麻豆国产精品va在线观看不卡 | 久久亚洲精品中文字幕冲田杏梨| 极品美乳网红视频免费在线观看 | 91成人高清| 日韩精品免费在线| 欧美 中文字幕| 精品美女在线观看| а√中文在线资源库| 欧美精品久久久久久久多人混战 | 国产在线拍揄自揄拍视频| 另类美女黄大片| 国产欧美久久久久久久久| 色七七影院综合| 日本成人网址| 色偷偷9999www| 性开放的欧美大片| 中文字幕综合一区| 欧美成人二区| 久久综合伊人77777尤物| www.久久ai| 欧美精品在线网站| 污视频网站免费在线观看| 欧美日本国产在线| 激情图片在线观看高清国产| 欧美精品videossex88| 超碰在线97国产| 91高清在线免费观看| 亚洲天堂资源| 国产精品高潮在线| 欧美性生活一级| 成人欧美一区二区三区黑人| 国产精品亚洲欧美一级在线| av成人午夜| 欧美在线导航| 日韩伦理一区二区三区av在线| 精品免费一区二区| 一区二区在线观看网站| 欧美高清不卡| 国内精品视频一区二区三区| 午夜一区不卡| av网站在线不卡| 国产精品资源在线| 中国免费黄色片| 日本一区二区免费在线| 全网免费在线播放视频入口| 亚洲综合激情网| 国产无码精品在线观看| 色婷婷精品久久二区二区蜜臂av| 最好看的日本字幕mv视频大全| 欧美日韩一区久久| 国产wwwwwww| 国产视频久久久久久久| 1769在线观看| 欧美国产乱视频| 中文字幕乱码中文乱码51精品| 国产精品视频在线观看| 97超碰成人| 日韩欧美精品一区二区三区经典| 偷偷www综合久久久久久久| 国产精彩视频一区二区| 蜜臀av性久久久久蜜臀aⅴ| 伊人av在线播放| 久久久久国产精品厨房| 天堂网avav| 色婷婷久久久亚洲一区二区三区| 国产麻豆免费观看| 精品偷拍一区二区三区在线看| 91免费在线| 97久久精品人人澡人人爽缅北| 不卡亚洲精品| 精品亚洲第一| 国产精品黑丝在线播放| 国产91在线视频观看| 国产一区二区不卡在线| mm131美女视频| 亚洲一区二区三区四区五区黄| 成人黄色三级视频| 亚洲国产精品yw在线观看| 欧美激情二区| 国产精品高精视频免费| 欧美尿孔扩张虐视频| 青青青青在线视频| 精品在线播放免费| 免费人成又黄又爽又色| 午夜精品久久久久影视| 不卡的日韩av| 精品国产一区二区三区久久狼黑人| 在线精品亚洲欧美日韩国产| 国产成人av一区二区三区| 精品高清久久| 日韩人妻无码精品久久久不卡| 韩国三级中文字幕hd久久精品| 精品人妻无码一区二区三区换脸| 亚洲成av人片在线| 精品人妻av一区二区三区| 久久久成人精品视频| av亚洲一区| 日韩av免费电影| 久久久www| 成人免费毛片糖心| 色悠久久久久综合欧美99| 深夜福利免费在线观看| 国语自产在线不卡| 荡女精品导航| 999一区二区三区| 国产馆精品极品| 538精品在线视频| 91精品国产综合久久精品app | 欧美激情亚洲视频| 久久久久久亚洲精品美女| 午夜在线视频免费观看| 久久99久久99精品免视看婷婷 | 视色视频在线观看| 国产色爱av资源综合区| 久操视频在线免费观看| 亚洲精品aⅴ中文字幕乱码 | 国产男女猛烈无遮挡91| 欧美一级精品| 婷婷免费在线观看| 中文字幕一区二区三区在线观看| 国产一区二区女内射| 久久精品国产免费观看| 精品91福利视频| 99在线免费视频观看| 成人av第一页| 久久一区二区三区视频| 亚洲天堂av在线免费| 国产亚洲人成a在线v网站| 一区二区三区日韩视频| 国产激情精品久久久第一区二区 | 欧美精选在线播放| gogo在线观看| 国产精品日韩欧美一区二区三区| av不卡免费看| 精品人伦一区二区| 欧美精品久久99| 国产www视频在线观看| 久久www免费人成精品| 老牛国产精品一区的观看方式| 日本美女bbw| 日韩一卡二卡三卡四卡| 不卡一本毛片| 日本在线播放一区| 激情av综合网| 日韩欧美视频在线免费观看| 亚洲人成伊人成综合网久久久| 91成人在线| 久久亚洲a v| 久久久久久久久岛国免费| 亚洲一区精品在线观看| 欧美激情免费观看| 国产成人影院| 日本人dh亚洲人ⅹxx| 黑人精品xxx一区一二区| 欧美精品hd| 激情伦成人综合小说| 美女mm1313爽爽久久久蜜臀| 久久国产在线观看| 亚洲天堂第二页| 97超碰成人| 一个色综合久久| 黄色精品一区二区| 欧美尤物美女在线| 免费国产在线精品一区二区三区| 精品一区二区综合| 最新中文字幕一区| 色综合视频网站|