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

關于MySQL索引面試題的6連炮!招架的住嗎?

數據庫 MySQL
其實就是讓你聊聊mysql的索引底層是什么數據結構實現的,弄不好現場還會讓你畫一畫索引的數據結構,然后會問問你mysql索引的常見使用原則。

1、面試真題

  1.  MySQ索引的原理和數據結構能介紹一下嗎?
  2.  b+樹和b-樹有什么區別?
  3.  MySQL聚簇索引和非聚簇索引的區別是什么?
  4.  他們分別是如何存儲的?
  5.  使用MySQL索引都有哪些原則?
  6.   MySQL復合索引如何使用?

2、面試官心理分析

數據庫是30k以內的工程師面試必問的問題,而且如果問數據庫,一定是問mysql,N年前可能java工程師出去面試,oracle這塊的技能是殺手锏,現在已經沒人說,會oracle是加分項了,現在都是熟悉大數據hadoop、hbase等技術是加分項。

3、面試題剖析 

3.1 索引的數據結構是什么

其實就是讓你聊聊mysql的索引底層是什么數據結構實現的,弄不好現場還會讓你畫一畫索引的數據結構,然后會問問你mysql索引的常見使用原則,弄不好還會拿個SQL來問你,就這SQL建個索引一般咋建?

至于索引是啥?這個問題太基礎了,大家都知道,mysql的索引說白了就是用一個數據結構組織某一列的數據,然后如果你要根據那一列的數據查詢的時候,就可以不用全表掃描,只要根據那個特定的數據結構去找到那一列的值,然后找到對應的行的物理地址即可。

那么回答面試官的一個問題,mysql的索引是怎么實現的?

答案是,不是二叉樹,也不是一顆亂七八糟的樹,而是一顆b+樹。這個很多人都會這么回答,然后面試官一定會追問,那么你能聊聊b+樹嗎?

但是說b+樹之前,咱們還是先來聊聊b-樹是啥,從數據結構的角度來看,b-樹要滿足下面的條件:

(1)d為大于1的一個正整數,稱為B-Tree的度。

(2)h為一個正整數,稱為B-Tree的高度。

(3)每個非葉子節點由n-1個key和n個指針組成,其中d<=n<=2d。

(4)每個葉子節點最少包含一個key和兩個指針,最多包含2d-1個key和2d個指針,葉節點的指針均為null 。

(5)所有葉節點具有相同的深度,等于樹高h。

(6)key和指針互相間隔,節點兩端是指針。

(7)一個節點中的key從左到右非遞減排列。

(8)所有節點組成樹結構。

(9)每個指針要么為null,要么指向另外一個節點。

(10)如果某個指針在節點node最左邊且不為null,則其指向節點的所有key小于v(key1),其中v(key1)為node的第一個key的值。

(11)如果某個指針在節點node最右邊且不為null,則其指向節點的所有key大于v(keym),其中v(keym)為node的最后一個key的值。

(12)如果某個指針在節點node的左右相鄰key分別是keyi和keyi+1且不為null,則其指向節點的所有key小于v(keyi+1)且大于v(keyi)。

 上面那段規則,我也是從網上找的,說實話,沒幾個java程序員能耐心去看明白或者是背下來,大概知道是個樹就好了。就拿個網上的圖給大家示范一下吧:

 比如說我們現在有一張表:  

  1.  
  2. id int  
  3. name varchar  
  4. age int  
  5.  
  6. 我們現在對id建個索引:15、56、77、20、49  
  7. select * from table where id = 49  
  8. select * from table where id = 15 

 

反正大概就長上面那個樣子,查找的時候,就是從根節點開始二分查找。大概就知道這個是事兒就好了,深講里面的數學問題和算法問題,時間根本不夠,面試官也沒指望你去講里面的數學和算法問題,因為我估計他自己也不一定能記住。

好了,b-樹就說到這里,直接看下一個,b+樹。b+樹是b-樹的變種,啥叫變種?就是說一些原則上不太一樣了,稍微有點變化,同樣的一套數據,放b-樹和b+樹看著排列不太一樣的。而mysql里面一般就是b+樹來實現索引,所以b+樹很重要。

b+樹跟b-樹不太一樣的地方在于:

  1.  每個節點的指針上限為2d而不是2d+1。
  2.  內節點不存儲data,只存儲key;

葉子節點不存儲指針。

這圖我就不自己畫了,網上弄個圖給大家瞅一眼:

 

  1. select * from table where id = 15  
  2. select * from table where id>=18 and id<=49  

 但是一般數據庫的索引都對b+樹進行了優化,加了順序訪問的指針,如網上弄的一個圖,這樣在查找范圍的時候,就很方便,比如查找18~49之間的數據:

 

其實到這里,你就差不多了,你自己仔細看看上面兩個圖,b-樹和b+樹都現場畫一下,然后給說說區別,和通過b+樹查找的原理即可。

接著來聊點稍微高級點的,因為上面說的只不過都是最基礎和通用的b-樹和b+樹罷了,但是mysql里不同的存儲引擎對索引的實現是不同的。

3.2 myism存儲引擎的索引實現

先來看看myisam存儲引擎的索引實現。就拿上面那個圖,咱們來現場手畫一下這個myisam存儲的索引實現,在myisam存儲引擎的索引中,每個葉子節點的data存放的是數據行的物理地址,比如0x07之類的東西,然后我們可以畫一個數據表出來,一行一行的,每行對應一個物理地址。

索引文件

 

  1. id=15,data:0x07,0a89,數據行的物理地址 

數據文件單獨放一個文件

 

  1. select * from table where id = 15 -> 0x07物理地址 -> 15,張三,22 

myisam最大的特點是數據文件和索引文件是分開的,大家看到了么,先是索引文件里搜索,然后到數據文件里定位一個行的。 

3.3 innodb存儲引擎的索引

好了,再來看看innodb存儲引擎的索引實現,跟myisam最大的區別在于說,innodb的數據文件本身就是個索引文件,就是主鍵key,然后葉子節點的data就是那個數據的所在行。我們還是用上面那個索引起來現場手畫一下這個索引好了,給大家來感受一下。

 

innodb存儲引擎,要求必須有主鍵,會根據主鍵建立一個默認索引,叫做聚簇索引,innodb的數據文件本身同時也是個索引文件,索引存儲結構大致如下: 

  1. 15,data:0x07,完整的一行數據,(15,張三,22)  
  2. 22,data:完整的一行數據,(22,李四,30)  

就是因為這個原因,innodb表是要求必須有主鍵的,但是myisam表不要求必須有主鍵。另外一個是,innodb存儲引擎下,如果對某個非主鍵的字段創建個索引,那么最后那個葉子節點的值就是主鍵的值,因為可以用主鍵的值到聚簇索引里根據主鍵值再次查找到數據,即所謂的回表,例如: 

  1. select * from table where name = ‘張三’ 

先到name的索引里去找,找到張三對應的葉子節點,葉子節點的data就是那一行的主鍵,id=15,然后再根據id=15,到數據文件里面的聚簇索引(根據主鍵組織的索引)根據id=15去定位出來id=15這一行的完整的數據 

所以這里就明白了一個道理,為啥innodb下不要用UUID生成的超長字符串作為主鍵?因為這么玩兒會導致所有的索引的data都是那個主鍵值,最終導致索引會變得過大,浪費很多磁盤空間。 

還有一個道理,一般innodb表里,建議統一用auto_increment自增值作為主鍵值,因為這樣可以保持聚簇索引直接加記錄就可以,如果用那種不是單調遞增的主鍵值,可能會導致b+樹分裂后重新組織,會浪費時間。 

3.4 索引的使用規則

一般來說跳槽時候,索引這塊必問,b+樹索引的結構,一般是怎么存放的,出個題,針對這個SQL,索引應該怎么來建立

select * from table where a=1 and b=2 and c=3,你知道不知道,你要怎么建立索引,才可以確保這個SQL使用索引來查詢

好了,各位同學,聊到這里,你應該知道具體的myisam和innodb索引的區別了,同時也知道什么是聚簇索引了,現場手畫畫,應該都ok了。然后我們再來說幾個最最基本的使用索引的基本規則。

其實最基本的,作為一個java碼農,你得知道最左前綴匹配原則,這個東西是跟聯合索引(復合索引)相關聯的,就是說,你很多時候不是對一個一個的字段分別搞一個一個的索引,而是針對幾個索引建立一個聯合索引的。

給大家舉個例子,你如果要對一個商品表按照店鋪、商品、創建時間三個維度來查詢,那么就可以創建一個聯合索引:shop_id、product_id、gmt_create

一般來說,你有一個表(product):shop_id、product_id、gmt_create,你的SQL語句要根據這3個字段來查詢,所以你一般來說不是就建立3個索引,一般來說會針對平時要查詢的幾個字段,建立一個聯合索引

后面在java系統里寫的SQL,都必須符合最左前綴匹配原則,確保你所有的sql都可以使用上這個聯合索引,通過索引來查詢

 create index (shop_id,product_id,gmt_create)

(1)全列匹配

這個就是說,你的一個sql里,正好where條件里就用了這3個字段,那么就一定可以用到這個聯合索引的: 

  1. select * from product where shop_id=1 and product_id=1 and gmt_create=’2018-01-01 10:00:00’ 

(2)最左前綴匹配

這個就是說,如果你的sql里,正好就用到了聯合索引最左邊的一個或者幾個列表,那么也可以用上這個索引,在索引里查找的時候就用最左邊的幾個列就行了: 

  1. select * from product where shop_id=1 and product_id=1,這個是沒問題的,可以用上這個索引的 

(3)最左前綴匹配了,但是中間某個值沒匹配

這個是說,如果你的sql里,就用了聯合索引的第一個列和第三個列,那么會按照第一個列值在索引里找,找完以后對結果集掃描一遍根據第三個列來過濾,第三個列是不走索引去搜索的,就是有一個額外的過濾的工作,但是還能用到索引,所以也還好,例如: 

  1. select * from product where shop_id=1 and gmt_create=’2018-01-01 10:00:00’ 

就是先根據shop_id=1在索引里找,找到比如100行記錄,然后對這100行記錄再次掃描一遍,過濾出來gmt_create=’2018-01-01 10:00:00’的行

這個我們在線上系統經常遇到這種情況,就是根據聯合索引的前一兩個列按索引查,然后后面跟一堆復雜的條件,還有函數啥的,但是只要對索引查找結果過濾就好了,根據線上實踐,單表幾百萬數據量的時候,性能也還不錯的,簡單SQL也就幾ms,復雜SQL也就幾百ms。可以接受的。

(4)沒有最左前綴匹配

那就不行了,那就在搞笑了,一定不會用索引,所以這個錯誤千萬別犯 

  1. select * from product where product_id=1,這個肯定不行 

(5)前綴匹配

這個就是說,如果你不是等值的,比如=,>=,<=的操作,而是like操作,那么必須要是like ‘XX%’這種才可以用上索引,比如說 

  1. select * from product where shop_id=1 and product_id=1 and gmt_create like ‘2018%’ 

6)范圍列匹配

如果你是范圍查詢,比如>=,<=,between操作,你只能是符合最左前綴的規則才可以范圍,范圍之后的列就不用索引了 

  1. select * from product where shop_id>=1 and product_id=1 

這里就在聯合索引中根據shop_id來查詢了

(7)包含函數

如果你對某個列用了函數,比如substring之類的東西,那么那一列不用索引 

  1. select * from product where shop_id=1 and 函數(product_id) = 2 

上面就根據shop_id在聯合索引中查詢 

3.5 索引的缺點以及使用注意

索引是有缺點的,比如常見的就是會增加磁盤消耗,因為要占用磁盤文件,同時高并發的時候頻繁插入和修改索引,會導致性能損耗的。

我們給的建議,盡量創建少的索引,比如說一個表一兩個索引,兩三個索引,十來個,20個索引,高并發場景下還可以。

字段,status,100行,status就2個值,0和1

你覺得你建立索引還有意義嗎?幾乎跟全表掃描都差不多了

select * from table where status=1,相當于是把100行里的50行都掃一遍

你有個id字段,每個id都不太一樣,建立個索引,這個時候其實用索引效果就很好,你比如為了定位到某個id的行,其實通過索引二分查找,可以大大減少要掃描的數據量,性能是非常好的

在創建索引的時候,要注意一個選擇性的問題,select count(discount(col)) / count(*),就可以看看選擇性,就是這個列的唯一值在總行數的占比,如果過低,就代表這個字段的值其實都差不多,或者很多行的這個值都類似的,那創建索引幾乎沒什么意義,你搜一個值定位到一大坨行,還得重新掃描。

就是要一個字段的值幾乎都不太一樣,此時用索引的效果才是最好的

還有一種特殊的索引叫做前綴索引,就是說,某個字段是字符串,很長,如果你要建立索引,最好就對這個字符串的前綴來創建,比如前10個字符這樣子,要用前多少位的字符串創建前綴索引,就對不同長度的前綴看看選擇性就好了,一般前綴長度越長選擇性的值越高。

好了,各位同學,索引這塊能聊到這個程度,或者掌握到這個程度,其實普通的互聯網系統中,80%的活兒都可以干了,因為在互聯網系統中,一般就是盡量降低SQL的復雜度,讓SQL非常簡單就可以了,然后搭配上非常簡單的一個主鍵索引(聚簇索引)+ 少數幾個聯合索引,就可以覆蓋一個表的所有SQL查詢需求了。更加復雜的業務邏輯,讓java代碼里來實現就ok了。 

大家要明白,SQL達到95%都是單表增刪改查,如果你有一些join等邏輯,就放在java代碼里來做。SQL越簡單,后續遷移分庫分表、讀寫分離的時候,成本越低,幾乎都不用怎么改造SQL。

我這里給大家說下,互聯網公司而言,用MySQL當最牛的在線即時的存儲,存數據,簡單的取出來;不要用MySQL來計算,不要寫join、子查詢、函數放MySQL里來計算,高并發場景下;計算放java內存里,通過寫java代碼來做;可以合理利用mysql的事務支持 

 

責任編輯:龐桂玉 來源: Java后端技術
相關推薦

2023-04-26 07:40:34

MySQL索引類型存儲

2023-01-28 08:24:28

MySQL索引B+樹

2009-06-02 15:30:35

Hibernate面試筆試題

2014-12-02 10:02:30

2022-05-08 19:58:10

JSONPJavaScript

2014-09-19 11:17:48

面試題

2021-06-29 10:21:54

this面試前端

2018-07-10 16:50:28

數據庫MySQL面試題

2011-06-07 08:55:25

2023-02-04 18:24:10

SeataJava業務

2021-03-10 08:04:11

this面試題JavaScript

2023-07-28 08:04:56

StringHeaatomic線程

2022-04-08 07:52:17

CSS面試題HTML

2019-09-10 10:48:10

RedisJava面試題

2021-03-19 11:08:27

開發技能代碼

2021-03-04 09:35:54

thisJavaScript開發

2020-06-04 14:40:40

面試題Vue前端

2015-09-02 14:09:19

面試題程序設計

2023-09-04 08:28:34

JavaScripforEach 循環

2020-09-21 11:10:06

Docker運維面試
點贊
收藏

51CTO技術棧公眾號

日韩 欧美 高清| 69av成年福利视频| 国产一级片自拍| a天堂中文在线官网在线| 999精品视频在线观看| 国产精品视频一二| 5566av亚洲| 99免费在线观看| 久久99高清| 91精品欧美综合在线观看最新 | 久久免费视频观看| 欧美做受xxxxxⅹ性视频| 成人亚洲精品| 色综合久久久久久久久| 欧美少妇在线观看| 欧美人一级淫片a免费播放| 欧美肥老太太性生活| 亚洲第一中文字幕在线观看| 吴梦梦av在线| 午夜成人免费影院| 国产一区二区女| 欧美亚洲在线观看| 婷婷在线精品视频| 欧美色图在线播放| 亚洲国产天堂网精品网站| 深夜黄色小视频| 97中文在线观看| 久久在线精品| 色网站在线播放| 污视频网站免费观看| 在线男人天堂| 懂色av中文字幕一区二区三区| 欧美久久久久中文字幕| 狠狠干 狠狠操| 国产剧情在线| 欧美激情中文不卡| 国产精品国产三级欧美二区| 一本色道久久综合熟妇| 校园激情久久| 久久免费国产视频| 久草视频在线资源| 五月天综合网站| 中文字幕免费国产精品| 四虎影成人精品a片| 国产精品任我爽爆在线播放| 欧美大片一区二区三区| 亚洲天堂av一区二区| a∨色狠狠一区二区三区| 色婷婷av一区二区三区大白胸 | 亚洲一区中文日韩| 国产树林野战在线播放| 麻豆网站在线看| 国产精品欧美久久久久一区二区| 欧洲久久久久久| 毛片在线播放网站| 久久久不卡网国产精品二区| 免费看国产精品一二区视频| 天堂中文字幕在线| 92精品国产成人观看免费| 久久99国产精品| 亚洲av毛片成人精品| 99精品久久免费看蜜臀剧情介绍| 精品蜜桃一区二区三区| 国产又爽又黄网站亚洲视频123| 成人精品免费看| 成人精品一二区| 丰满少妇被猛烈进入| 成人美女在线观看| 久久99蜜桃综合影院免费观看| 天堂国产一区二区三区| 91麻豆免费在线观看| 蜜桃网站成人| 国产视频福利在线| 国产精品久久久久7777按摩| 黄色a级在线观看| 亚洲wwwww| 同产精品九九九| 已婚少妇美妙人妻系列| 精品176极品一区| 制服.丝袜.亚洲.中文.综合| 性生交大片免费看l| 荡女精品导航| 亚洲色图日韩av| 日韩精品一区二区三区在线视频| 亚洲人成免费网站| 久久久中文字幕| 欧美超碰在线观看| 国产在线精品一区二区夜色| 国产精品一区二区三区免费 | 亚洲男人av电影| 69视频在线观看免费| 色狮一区二区三区四区视频| 美日韩精品视频免费看| 日本少妇毛茸茸高潮| 欧美专区在线| 91久久夜色精品国产网站| 欧洲精品久久一区二区| 国产精品免费观看视频| 欧美视频在线第一页| 日韩电影在线观看完整版| 国产日韩精品视频一区| 韩国黄色一级大片| 欧亚在线中文字幕免费| 欧美三级三级三级爽爽爽| a级大片免费看| 久久不见久久见中文字幕免费| 少妇高潮久久77777| 亚洲国产精品午夜在线观看| 麻豆精品在线观看| 精品午夜一区二区| 国产视频在线播放| 在线亚洲免费视频| 五月天激情小说| 91精品啪在线观看国产81旧版| 97婷婷涩涩精品一区| 91久久精品国产91性色69| 91毛片在线观看| 久艹在线免费观看| 96视频在线观看欧美| 精品无人区太爽高潮在线播放| 久久精品黄色片| 青青草91视频| 久久综合久久久| 欧美xxxx黑人又粗又长| 欧美日本视频在线| 91中文字幕永久在线| 最新亚洲激情| www.av一区视频| 黄色网址在线免费| 欧美日韩亚洲综合一区| 欧美激情aaa| 国产午夜精品一区二区三区欧美 | 国产精品成人久久电影| 日韩欧美三区| 中文字幕精品在线| 无码久久精品国产亚洲av影片| 99国产精品久久久久久久久久久| 日韩一级特黄毛片| 激情视频亚洲| 久久精品成人欧美大片古装| 中国精品一区二区| 国产欧美一区二区三区沐欲| 欧美一级黄色片视频| 香蕉人人精品| 欧美一级大胆视频| 色网站在线免费观看| 精品露脸国产偷人在视频| 波多野结衣有码| 99热这里只有精品8| 国产伦精品一区二区三区四区免费| www视频在线看| 日韩一区二区免费高清| 国产人妻精品一区二区三区不卡| 国产一区在线看| 精品一区二区三区毛片| 国产乱码精品一区二区三区亚洲人 | 欧美美女在线| 国产成人激情小视频| 精品视频二区| 欧美日韩二区三区| 日韩欧美123区| 国产福利一区二区三区视频| 麻豆映画在线观看| 9国产精品午夜| 97在线视频一区| 欧美女子与性| 欧美色综合天天久久综合精品| 亚洲色图日韩精品| 精品一区二区三区的国产在线播放| 在线免费观看成人网| 欧洲精品99毛片免费高清观看| 欧美大片在线免费观看| 凸凹人妻人人澡人人添| 91黄色免费网站| 成年人网站在线观看视频| 国产精品一二三区| 九一国产精品视频| 黄色不卡一区| 91在线观看免费高清| av免费不卡| 日韩二区三区在线| 怡红院男人的天堂| 一区二区三区四区在线播放| 无码精品一区二区三区在线播放| 日一区二区三区| 香蕉视频免费版| 日韩三区视频| 国产一区视频在线| а√在线中文网新版地址在线| 亚洲日本中文字幕免费在线不卡| 在线免费观看一级片| 亚洲已满18点击进入久久| 亚欧洲乱码视频| 国产久卡久卡久卡久卡视频精品| 欧美深夜福利视频| 欧美残忍xxxx极端| 久久超碰亚洲| 国产精品一区三区在线观看| 日本韩国欧美精品大片卡二| 国产三区在线观看| 亚洲欧美日韩精品久久亚洲区| 国产精品热久久| 一本色道**综合亚洲精品蜜桃冫 | 亚洲地区一二三色| 成人在线观看免费高清| av一区二区不卡| 精品亚洲视频在线| 久久大逼视频| 国产va亚洲va在线va| 欧美大片aaaa| 色女孩综合网| 网曝91综合精品门事件在线| 91精品国产91久久久久青草| av一区在线播放| 97国产成人精品视频| 91精品国产91久久久久久青草| 一区二区在线视频| 性感美女一级片| 欧美mv和日韩mv的网站| 91丨porny丨在线中文 | 第四色中文综合网| 成人激情免费在线| 国产经典一区| 国产成人精品亚洲精品| 精品众筹模特私拍视频| 美日韩丰满少妇在线观看| 国产福利免费在线观看| 亚洲精品网站在线播放gif| 蜜桃av噜噜一区二区三区麻豆| 欧美日韩成人综合| 成年人晚上看的视频| 欧美日韩亚洲国产一区| 中日韩精品视频在线观看| 亚洲综合在线观看视频| 国产人妻精品一区二区三区不卡| 国产精品福利av| 永久免费看mv网站入口78| 91尤物视频在线观看| 国产又黄又粗又猛又爽的视频| 粉嫩13p一区二区三区| 91精品国产高清91久久久久久| 国产一区亚洲一区| 日韩精品视频网址| 国产美女视频91| 亚洲热在线视频| 国产精品99久久久久久久vr| 性鲍视频在线观看| 国产中文字幕一区| 欧洲另类一二三四区| 久久综合免费视频影院| 四虎一区二区| 人与嘼交av免费| 中文字幕亚洲乱码熟女1区2区| 日韩一级电影| 91久久精品一区二区别| 九色精品蝌蚪| av在线不卡一区| 精品综合久久88少妇激情| 国产精品免费在线| 国产精品伦理一区| 亚洲图片激情小说| 久久久久久久麻豆| 欧美在线se| 午夜国产精品一区| 国产亚洲精品码| 亚洲国产成人va在线观看天堂| 国产精品1234区| 色综合色综合色综合| 日本欧美www| 91精品国产综合久久久久久久| av网站免费大全| 亚洲福利影片在线| 国产女主播在线写真| 色妞色视频一区二区三区四区| 福利在线视频网站| 97久久超碰福利国产精品…| 欧美电影免费观看网站| 国产精品一区二区三区久久久| 91精品国产色综合久久不卡粉嫩| 99视频网站| 中文精品一区二区| 自拍亚洲欧美老师丝袜| 欧美日一区二区在线观看 | 日韩综合第一页| 久久精品一区二区三区不卡| 国产馆在线观看| 亚洲一区在线观看免费| 国产一卡二卡三卡| 91精品国产综合久久久蜜臀图片| 天天操天天干天天爽| 最新的欧美黄色| 波多野在线观看| 国产精品女人久久久久久| 日韩影片在线观看| 欧美一区二区综合| 欧美久久九九| 免费看污污网站| 99天天综合性| 性色av无码久久一区二区三区| 午夜天堂影视香蕉久久| 中文字幕精品一区二| 亚洲第一av网站| 快射av在线播放一区| 日韩av电影在线播放| 亚洲国产中文在线| 亚洲精品一品区二品区三品区 | 青青草久久爱| 人人妻人人澡人人爽精品欧美一区| 国产欧美日韩亚洲一区二区三区| www.国产视频.com| 久久日韩精品一区二区五区| 激情小说中文字幕| 在线91免费看| 国产特黄在线| 777精品视频| 欧美视频精品全部免费观看| 视频一区视频二区视频三区视频四区国产| 欧美三级黄美女| 天天干天天曰天天操| 国产精品你懂的在线欣赏| 国产精品va无码一区二区三区| 精品少妇一区二区三区日产乱码| 日本亚洲精品| 国产精品日韩在线一区| 九九在线高清精品视频| 国产欧美日韩网站| 国产成人精品免费网站| 久久精品一区二区三区四区五区| 在线中文字幕一区二区| 日本福利午夜视频在线| 91成人在线播放| 国产精品主播在线观看| 毛片av在线播放| 国产剧情一区在线| 天天看片中文字幕| 欧美一区二区三区在线电影| 日本中文字幕在线播放| 国产精品美女主播| 不卡在线一区二区| 美女黄色片视频| 久久久天堂av| 亚洲第一网站在线观看| 亚洲美女av电影| 男人皇宫亚洲男人2020| 欧美高清性xxxxhd| 久久婷婷av| 亚洲av熟女国产一区二区性色| 一本到不卡免费一区二区| 国产一区精品| 国产精品91一区| 日韩精品免费| 欧美午夜精品理论片| 亚洲欧美激情一区二区| 精品欧美一区二区精品少妇| 色综合久久中文字幕综合网小说| 在线综合色站| 欧美综合在线播放| 久久亚洲精精品中文字幕早川悠里 | 国产九一精品| 久久午夜夜伦鲁鲁一区二区| 国产女人18水真多18精品一级做 | 91麻豆精品成人一区二区| 欧美精品久久天天躁| av片哪里在线观看| 国产视频精品网| 久久99伊人| 五月婷婷综合激情网| 欧美一区二区三区影视| 91黄页在线观看| 欧美性天天影院| 狠狠色丁香婷综合久久| 国产亚洲精品久久久久久无几年桃 | 亚州av一区| 在线观看免费黄网站| 亚洲欧美激情一区二区| 亚洲 国产 欧美 日韩| 国产女同一区二区| 91久久亚洲| 天天干天天操天天拍| 日韩视频免费观看高清在线视频| www成人免费观看| 亚洲欧洲一区二区福利| 国产成人亚洲综合a∨婷婷图片| 黄色一级片免费看| 中文亚洲视频在线| 香蕉免费一区二区三区在线观看| 国产精品宾馆在线精品酒店| 国产精品欧美久久久久一区二区| 亚洲国产中文字幕在线| 日韩av不卡电影| 国产精品扒开腿做爽爽爽软件| 爱爱的免费视频| 正在播放亚洲一区| 欧美羞羞视频| 91免费国产精品| 欧美国产视频在线| 色香蕉在线视频| 91色琪琪电影亚洲精品久久| 亚洲男女自偷自拍| 懂色av懂色av粉嫩av|