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

MySQL索引詳解,你學會了嗎?

數據庫 MySQL
B+樹索引是目前關系型數據庫中最常用、最有效的索引之一,其索引結構是一種多路平衡樹結構(與二叉樹類似,B代表的不是Binary,而是Balance)。通過B+樹索引能夠快速的定位要要查找的數據所在的數據頁,然后將頁讀入內存,在通過頁字典槽快速尋找到數據行。

InnoDB存儲引擎支持以下幾種常見的索引,如B+樹索引、哈希索引、全文索引。哈希索引是自適應的,InnoDB會根據表的使用情況自動為表生成哈希索引。

B+樹索引是目前關系型數據庫中最常用、最有效的索引之一,其索引結構是一種多路平衡樹結構(與二叉樹類似,B代表的不是Binary,而是Balance)。通過B+樹索引能夠快速的定位要要查找的數據所在的數據頁,然后將頁讀入內存,在通過頁字典槽快速尋找到數據行。

InnoDB引擎中實現了B+樹結構的索引,其高度一般在2~3層,換句話說,查詢記錄的IO操作次數最多3次。InnoDB索引可以分為聚簇索引和非聚簇索引,這兩種分類的索引都是B+樹結構的。

聚簇索引(Clustered Index)

聚簇索引,又稱聚集索引,其是一種數據存儲的方式。在InnoDB存儲引擎中B+樹索引與數據是存儲在一起的,換句話說InnoDB存儲引擎的數據是由B+樹索引組織的。

建表

在進行索引講解前,我們先建立如下表:

-- ----------------------------
-- Table structure for index_test
-- ----------------------------
DROP TABLE IF EXISTS `index_test`;
CREATE TABLE `index_test` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`age` int NOT NULL,
`profession` varchar(100) NOT NULL,
`sex` char(1) NOT NULL,
PRIMARY KEY (`id`),
KEY `index_name_profession` (`name`,`profession`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of index_test
-- ----------------------------
BEGIN;
INSERT INTO `index_test` (`id`, `name`, `age`, `profession`, `sex`) VALUES (1, 'Tom', 33, 'teacher', 'm');
INSERT INTO `index_test` (`id`, `name`, `age`, `profession`, `sex`) VALUES (2, 'Ryan', 25, 'programmer', 'm');
INSERT INTO `index_test` (`id`, `name`, `age`, `profession`, `sex`) VALUES (3, 'Li', 18, 'student', 'w');
INSERT INTO `index_test` (`id`, `name`, `age`, `profession`, `sex`) VALUES (4, 'Bob', 40, 'doctor', 'm');
INSERT INTO `index_test` (`id`, `name`, `age`, `profession`, `sex`) VALUES (5, 'Jim', 60, 'doctor', 'm');
INSERT INTO `index_test` (`id`, `name`, `age`, `profession`, `sex`) VALUES (6, 'Ben', 34, 'teacher', 'm');
INSERT INTO `index_test` (`id`, `name`, `age`, `profession`, `sex`) VALUES (7, 'Joy', 28, 'programmer', 'w');
COMMIT;

聚簇索引結構

數據行實際存儲在數據頁中,通過B+樹索引結構的葉子節點將數據頁組織起來。如下圖所示(若對B+樹結構不了解可以看我另外一篇文章《數據結構-B樹族》):

聚簇索引結構

  • B+樹的每一個葉子節點都是一個數據頁。
  • B+樹的內部節點都是索引節點,鍵的左右指針指向的都是數據頁。
  • 葉子節點間(數據頁)是通過指針(頁指針)相連的,是一個雙向鏈表結構。
  • 葉子節點(數據頁)內部是數據行,數據行之間也是通過指針相連。
  • 葉子節點(數據頁)與葉子節點內的數據行,都是按照主鍵順序排列的(注意:葉子節點之間與行之間都不是物理連續的,而都是鏈表結構)。

主鍵選擇原則

使用B+樹作為數據存儲的結構我們需要讓主鍵(鍵值)滿足以下特性:

鍵值長度盡量小:鍵值是會占用空間的,我們希望的是其越小越好。

鍵值盡量單調遞增:B+樹的插入可能會引起節點的分裂,如果不是單調遞增,我們可能會插入到頁中間位置,這就可能導致數據的分裂以及數據的挪動,嚴重的影響插入性能。

非聚簇索引(Secondary Index)

非聚簇索引,也稱非聚集索引、二級索引、輔助索引等。在InnoDB中,非聚簇索引的頁節點除了包含鍵之外,還包含一個bookmark,也就是一個可以找到該鍵對應的數據行所在位置。結合我們上面講到的,這里的書簽值就對應的是聚簇索引的鍵。

輔助索引與聚簇索引關系

單列索引

單列索引,即一個索引樹中只包含一個列的值,一張表可以建立多個單列索引,如果一個查詢語句中包含了單列索引列,優化器可能只會選擇一個最優的單列索引,具體遵循如下原則:

  • 如果查詢條件是AND連接,且用到的所有(或部分)列都建立了索引,則優化器會按照最優策略,可能會命中一個或多個索引。
  • 如果查詢條件是OR連接,且用到的所有列都建立了索引,則所有索引都會命中。
  • 如果查詢條件是OR連接,且用到的只有部分列建立了索引,則執行全表掃表。

1、2兩條原則涉及到了一個index_merge策略,這是一個多索引合并優化策略,這個概念我們下面會講。

單列索引

索引合并

合并索引是在MySQL 5.7的InnoDB引擎引入的一個策略,我們稱之為index_merge,如果使用到了這種策略,執行計劃會返回type:index_merge,它具有有以下的特性:

  • 它會將幾個索引的范圍掃描結果合并成(AND取交集、OR取并集)一個。
  • 該策略只適用于單表操作,多表查詢失效。
  • 如果存在某個OR條件沒有建立單列索引,則失效。
  • 如果所有條件對應的列都是索引,則AND和OR組合使用也會命中該類型索引。
  • 執行如下語句我們可以看到type為index_merge,Extra為sort_union。

EXPLAIN SELECT * FROM index_test WHERE name='Tom' OR professinotallow='teacher';

執行結果

組合索引

在沒有建立組合索引的情況下,可通過多個單列索引UNION操作快速得到結果。接下來我們介紹一下組合索引,先見下圖:

組合索引

對于組合索引來說,所有參與索引的列都會出現在索引樹上。如上圖,是一個index_profession_name組合索引,存儲引擎首先會根據profession列值順序建立第一個索引列,緊接在第一個列的基礎上建立第二個索引列。

組合索引有以下特性:

  • 查詢遵循最左原則,查詢條件必須包含第一個索引列,即profession、profession&name、profession&sex等組合;
  • 如果查詢條件包含了第一個索引列,則查詢條件的書寫順序沒有要求,即name&profession、age&profession等寫法都可以,優化器會處理順序;
  • OR查詢會讓組合索引失效;

回表查詢

組合索引的查詢可能涉及到回表查詢操作,什么是回表查詢呢?

當SELECT的列中包含了非索引列時,我們需要通過聚簇索引來補齊數據,這個就叫回表查詢。

我們來舉個例子:

SELECT profession,name,age,sex FROM index_test WHERE profession = 'xxx';

此時的age、sex列不在索引index_profession_name中,則需要通過查詢index_test的聚簇索引補齊age、sex列信息。

如果我們SELECT的列都是索引列呢?是否就不需要回表查詢了,這個有涉及另一個概念即索引覆蓋。

索引覆蓋

從上面的一個例子我們很容易得出,索引覆蓋就是:

當SELECT的列中包含都是索引列時,我們通過該非聚簇索引就能拿到所有數據,這就叫做索引覆蓋。

如下圖是索引覆蓋時的執行計劃的內容,我們可以看到Extra為Usering index。

索引覆蓋

索引下推

關于索引下推從字面上不太好理解(這個詞很唬人,但是我們了解了其邏輯后,你會發現極其簡單,論起名的重要性),我們先看下面這張圖:

SELECT * FROM index_test WHERE name like 'J%' AND profession = 'programmer' AND sex = 'm';

索引下推

在MySQL5.6以前,只要第一個索引列滿足查詢條件,就會回表查詢,如上圖有3次回表查詢。

在MySQL5.6之后,通過索引下推,會依次匹配多個索引列,過濾掉不符合的,從而減少回表次數,如上圖不等于programmer直接跳過了,減少了1次回表操作。

索引下推可以有效減少回表次數,從而提升查詢效率(也就是多個if判斷,搞個名詞唬人)。

索引的選擇性

索引的選擇性,就是指該索引的建立是否有必要性,因為并不是所有查詢條件中出現的列都需要添加索引。比如性別(男、女),整張表除了男就是女,浪費索引存儲空間且起不到任何提升查詢速度的作用。

索引的選擇性有一個非常重要的指標,即Cardinality(基數),即該索引所統計的不重復記錄數,如果其越接近于聚簇索引,那么其利用率及效率越高,如下圖所示:

索引的選擇性

索引的選擇性公式為:索引的選擇性 = 不重復的索引值數 / 數據表的記錄總數。

聚簇索引選擇性為1,也就是說如果一個索引的選擇性約接近1,其查詢效率越高,但是索引所占用的空間越大。

索引失效

  • OR 前后查詢條件不都是索引字段。
  • 未遵循最左N個字段。
  • 模糊查詢 LIKE 以 % 開頭。
  • 需要類型轉換。
  • WHERE 中索引列有計算。
  • WHERE 中索引列用到了函數。
  • 索引字段上使用 NOT、<> 、!= 。
  • 當全表掃描速度比索引速度快時。

前綴索引

我們先來看如下兩個索引:

ALTER TABLE index_test ADD INDEX index_name(name);

ALTER TABLE index_test ADD INDEX index_name_pre(name(1));

上面兩個索引的唯一不同點就是,index_name_pre索引是一個name的前綴索引,前綴的長度為1,也就是說index_name_pre只包含name字段的第一個字符。

我們分別執行下面的語句,看一下兩個索引的使用情況:

EXPLAIN SELECT * FROM index_test WHERE name like 'Ben';

  • index_name_pre索引

index_name_pre索引

  • index_name索引

index_name索引

從兩條執行計劃可以看出,若在index_name_pre索引下查詢會掃描2行記錄,而index_name索引下只需要掃描1行記錄。那是不是前綴索引就沒有存在的意義了呢?然而并不是,我們接著看。

前綴索引的選擇原則

  • 列值很長且需要建立索引:如果我們為表index_test表建立了一個新列:address varchar(500),該列是一個存儲用戶的地址列,其實際長度可能有幾百個字符。如果我們為其建立一個完整索引,其所占用的索引空間將是巨大的,這時我們可以為其建立一個前綴索引。
  • 前綴索引需要列的一部分前綴作為索引,這個“一部分”的計算依據是根據索引的選擇性來決定的。

我們希望的是:前綴n的選擇性無限趨近于全列的選擇性,但n的值需要盡量小(節省空間),計算步驟如下:

column_name的全列選擇性計算方式:

  • SELECT COUNT(DISTINCT column_name) / COUNT(*) FROM table_name;

column_name的前綴n的選擇性計算方式:

  • SELECT COUNT(DISTINCT LEFT(column_name, n)) / COUNT(*) FROM table_name;

通過調整n的大小,得到一個接近全列選擇性的n值,同時又能保證前綴足夠小。

Hash索引

MySQL的Memory引擎支持Hash索引,但我們今天講的不是該引擎,而是InnoDB的存儲引擎的哈希索引。我這里說的哈希索引,嚴格意義上說應該叫自適應哈希索引(Adaptive Hash Index,AHI)。

自適應哈希索引是不能用戶手動創建的,它是由引擎根據當前視圖的數據訪問頻次在緩沖池建立一個哈希索引。通過訪問頻次建立,換句話說就是為高頻熱點數據建立索引。

結構

哈希索引是通過哈希表來實現的,Key是利用查詢條件中的鍵通過哈希函數計(CRC32算)算得到,Value則是直接指向數據頁中的值。

自適應哈希索引結構

如上圖通過Hash索引可以做到O(1)的時間復雜度查詢,而利用輔助索引則需要N次(與樹的高度有關)。

自適應的觸發條件

  • 使用相同的條件訪問了同一個索引17次;

例如表index_test表有index_profession_name組合索引,如果我們使用以下任意語句訪問(不能是交替訪問)可創建自適應索引:

SELECT * FROM index_test WHERE profession = 'programmer';

SELECT * FROM index_test WHERE profession = 'programmer' AND name = 'Tom';

如果以同一查詢條件進行了100次以上的訪問;

數據頁被相同查詢語句訪問了N次(N = 頁記錄數 * 1/16);

缺點

  • 自適應哈希索引的維護勢必會用到鎖來控制并發,那么該鎖可能導致性能損耗。
  • 自適應哈希索引在DML操作下引發的數據變化時處理效率成本高。
  • 自適應哈希索引的條件很苛刻,需要相同的查詢條件連續訪問,且只適用于等值搜索條件,order by、模糊查詢等都不行。
  • 其本身會可能會占用大量的內存池空間,從而加重引擎的負擔,需要做好參數調節。

總結

  • InnoDB存儲引擎的索引共有以下幾種:B+樹索引、哈希索引、全文索引,本文主要介紹了前兩種。
  • InnoDB存儲引擎的數據是由B+樹索引組織的,換句話說:聚簇索引即使索引又存儲完整記錄數據。
  • 可以利用多個單列索引的索引合并來實現組合索引的效果,但是不推薦這么做。
  • 在設計組合索引時需要注意索引的選擇性,約趨近于1的索引會越高效,但是索引存儲空間也會變大。
  • 可以利用覆蓋索引來快速的查詢,覆蓋索引不用回表查詢,非常高效。
  • 當遇到非常大的列需要建立索引時可以考慮使用前綴索引,但要注意前綴的長度選擇,可通過索引的選擇性公式計算。
  • 索引下推可以有效減少組合索引的回表次數,提示查詢效率。
  • 自適應哈希索引的條件非常的苛刻,因此要設法利用它來提升查詢效率。


責任編輯:武曉燕 來源: 今日頭條
相關推薦

2023-03-26 22:31:29

2024-02-04 00:00:00

Effect數據組件

2024-01-02 12:05:26

Java并發編程

2022-07-13 08:16:49

RocketMQRPC日志

2022-04-26 08:41:54

JDK動態代理方法

2023-05-05 06:54:07

MySQL數據查詢

2023-03-08 08:44:47

2024-12-31 00:08:37

C#語言dynamic?

2024-09-10 10:34:48

2024-01-19 08:25:38

死鎖Java通信

2023-01-10 08:43:15

定義DDD架構

2023-07-26 13:11:21

ChatGPT平臺工具

2023-05-18 09:01:11

MBRGPT分區

2024-10-12 10:25:15

2023-03-09 07:38:58

static關鍵字狀態

2024-08-12 08:12:38

2023-11-01 07:28:31

MySQL日志維護

2023-08-01 12:51:18

WebGPT機器學習模型

2024-01-02 07:04:23

2023-07-03 07:20:50

點贊
收藏

51CTO技術棧公眾號

欧美日韩黄网站| 超碰免费在线| 老牛国产精品一区的观看方式| 亚洲午夜激情免费视频| 午夜精品在线免费观看| 福利在线视频网站| 久久这里只精品最新地址| 国产免费久久av| 久久久久成人精品无码| 精品福利久久久| 精品剧情在线观看| 色一情一乱一伦一区二区三区日本| 超碰在线无需免费| 久久久www成人免费毛片麻豆| 91久久久在线| 日本免费在线观看视频| 亚洲区综合中文字幕日日| 亚洲精品久久久久中文字幕二区 | 久久国产免费| 欧美黄网免费在线观看| 69精品无码成人久久久久久| 草莓视频一区二区三区| 欧美日韩国产美| 色综合久久久久无码专区| av在线官网| 国产精品久久久久久久久动漫| 国产日韩精品推荐| 精品区在线观看| 免费美女久久99| 国产91精品在线播放| 国产亚洲第一页| 888久久久| 主播福利视频一区| xxx在线播放| 老司机在线精品视频| 日韩欧美成人午夜| 日韩在线不卡一区| 日韩三区在线| 色呦呦网站一区| 国产97在线 | 亚洲| 国产网红女主播精品视频| **欧美大码日韩| 亚洲精品久久久久久一区二区| 欧美3p视频在线观看| aaa欧美日韩| 国外成人免费视频| 黄色片网站免费在线观看| 国产一区二区成人久久免费影院| 国产在线观看精品| 在线视频 中文字幕| 青青国产91久久久久久 | 成人免费视频国产免费| 亚洲在线播放| 性日韩欧美在线视频| 精品在线视频观看| 亚洲大胆视频| 97超级碰在线看视频免费在线看| 懂色av.com| 一本久久知道综合久久| 欧美影院在线播放| 国产寡妇亲子伦一区二区三区四区 | 精品视频在线观看日韩| 中文字幕一区二区三区人妻| 欧美美乳视频| 中文字幕自拍vr一区二区三区| 成人黄色短视频| 一区二区电影在线观看| 欧美成人网在线| 久久精品免费av| 一本一本久久| 国产精品夫妻激情| 国产免费久久久| 成人在线综合网| 精品午夜一区二区| 国产一区二区三区福利| 欧美国产日产图区| 久久免费一级片| 国产精品电影| 日本乱人伦aⅴ精品| 无需播放器的av| 国产亚洲精aa在线看| 日韩欧美二区三区| 国产熟妇久久777777| 日韩在线欧美| 97国产在线观看| 久久久999久久久| 国产剧情一区二区三区| 国产综合动作在线观看| 国产原创av在线| 一区二区三区日韩在线观看| 色综合久久久久无码专区| 黄色精品视频网站| 亚洲精品一区二区三区在线观看| 免费观看av网站| 亚洲情侣在线| 青青草原一区二区| 国产喷水吹潮视频www| 成人午夜大片免费观看| 色一情一乱一伦一区二区三区 | 九九久久婷婷| 欧美成人激情在线| 欧美人一级淫片a免费播放| 国产麻豆欧美日韩一区| 热re99久久精品国产99热| av免费在线免费观看| 在线视频综合导航| 精品国产aⅴ一区二区三区东京热 久久久久99人妻一区二区三区 | 7777精品久久久大香线蕉| 精品国产av色一区二区深夜久久 | 自拍偷拍精品视频| 不卡视频在线看| 中文字幕久精品免| 欧美成人黑人| 亚洲成人网在线| 日韩国产第一页| 久久精品毛片| 国产精品一区而去| 成人在线播放| 欧美视频第二页| 一级性生活大片| 亚洲美女网站| 国产专区精品视频| 二区三区在线播放| 粉嫩老牛aⅴ一区二区三区| 初高中福利视频网站| 三级电影一区| 日本一区二区不卡| 亚洲日本香蕉视频| 亚洲成人1区2区| 亚洲少妇一区二区三区| 91精品国产福利在线观看麻豆| 国产成人精品综合久久久| 色欲av永久无码精品无码蜜桃| 亚洲乱码国产乱码精品精98午夜| 国产又粗又长又大的视频| 欧美人与物videos另类xxxxx| 国内精品400部情侣激情| 国产黄色av网站| 亚洲欧洲中文日韩久久av乱码| 在线观看亚洲色图| 欧美一级淫片| 国产精品视频区| freemovies性欧美| 精品污污网站免费看| 国产sm调教视频| 日韩影院在线观看| 日韩一区不卡| 福利一区和二区| 最近中文字幕mv在线一区二区三区四区| 国产熟妇一区二区三区四区| 久久亚洲欧美国产精品乐播| 欧美性大战久久久久xxx | 91tv亚洲精品香蕉国产一区| 亚洲欧洲免费视频| 精品乱码一区内射人妻无码| 国产日产精品1区| 黄色av免费在线播放| 狠狠操综合网| 国产精品永久在线| 国产三区视频在线观看| 欧美日韩电影在线播放| 顶级黑人搡bbw搡bbbb搡| 激情偷乱视频一区二区三区| 精品少妇人妻av一区二区| 久久久久久爱| 久久人人看视频| 日本视频在线观看一区二区三区 | 亚洲无吗一区二区三区| 日韩国产一区二区| 91在线中文字幕| 菠萝蜜视频在线观看www入口| 亚洲精品一区二区三区精华液| 国产成人亚洲精品自产在线| 久久久久久久免费视频了| 天天干天天爽天天射| 女同性一区二区三区人了人一| 国产精品 日韩| 国模套图日韩精品一区二区| 中文字幕九色91在线| 99热这里只有精品66| 亚洲福利一二三区| 国产sm调教视频| 国产一区二区不卡在线| 免费看又黄又无码的网站| 欧美色蜜桃97| 成人18视频| 日韩中文在线播放| 欧美大片在线影院| 成人在线免费电影| 精品免费国产一区二区三区四区| 在线精品免费视| 亚洲欧美另类小说| 一区二区黄色片| 国产精品亚洲视频| 成年人在线看片| 欧美精品网站| 亚洲a∨一区二区三区| 成人av地址| 成人a在线视频| 亚洲人体视频| 欧美高清视频在线| 福利视频在线播放| 日韩av在线资源| 99热这里只有精品3| 色噜噜狠狠色综合中国| 亚洲综合网在线| 国产人成亚洲第一网站在线播放| 精品人妻人人做人人爽夜夜爽| 日韩高清在线一区| a级黄色小视频| 91精品婷婷色在线观看| 欧美日韩精品免费在线观看视频| 日韩在线视频一区二区三区| 国产精品普通话| 亚洲人成午夜免电影费观看| 欧美第一页在线| 成人在线app| 色偷偷偷亚洲综合网另类| 你懂的免费在线观看| 亚洲福利影片在线| 精品久久久久成人码免费动漫| 欧美偷拍一区二区| 无码人妻黑人中文字幕| 精品久久久久久久久久久久久久 | 久久香蕉av| 久久综合久久美利坚合众国| 岛国在线视频免费看| 精品丝袜一区二区三区| 欧洲精品久久一区二区| 日韩欧美中文字幕一区| 国产手机视频在线| 666欧美在线视频| 亚洲中文字幕一区二区| 欧美探花视频资源| 国产成人av免费| 欧美伊人久久久久久久久影院 | 久久久国产精华液999999| 精品日本12videosex| 日本a级片久久久| 羞羞答答一区二区| 美媛馆国产精品一区二区| 偷窥自拍亚洲色图精选| 久久久99国产精品免费| 香蕉久久精品| 欧美一区二区三区在线免费观看 | 成人永久在线| 91夜夜未满十八勿入爽爽影院| 亚洲一区导航| 亚洲最大福利视频网| 亚洲一区二区三区免费| 成人免费视频视频在| 91精品久久久久久综合五月天| yy111111少妇影院日韩夜片| 成人知道污网站| 懂色av一区二区三区在线播放| 中文字幕亚洲在线观看 | 善良的小姨在线| 国产福利精品一区二区| 国产精品果冻传媒| 99久久精品免费看国产| 国产又爽又黄无码无遮挡在线观看| 久久亚洲综合色| 成人无码精品1区2区3区免费看| 中文字幕中文字幕一区| 校园春色 亚洲| 午夜激情久久久| 日韩在线视频不卡| 884aa四虎影成人精品一区| 精品人妻一区二区三区麻豆91| 精品国产伦一区二区三区观看体验 | 亚洲色图美腿丝袜| 日本天堂在线观看| 欧美激情精品久久久久久黑人| 欧美日韩在线观看首页| 国产精品人成电影在线观看| 国产日韩中文在线中文字幕| 国外成人免费视频| 久久视频精品| 97超碰人人澡| 另类调教123区| 男男一级淫片免费播放| 亚洲国产精品成人久久综合一区| 国产老头老太做爰视频| 午夜精品视频在线观看| 中文资源在线播放| 欧美mv和日韩mv的网站| 六十路在线观看| 美女av一区二区三区| 色在线免费观看| 91在线高清免费观看| 日韩在线黄色| 欧美xxxx吸乳| 久久精品道一区二区三区| 黄色片子免费看| 国产午夜精品一区二区| 久久久国产精品黄毛片| 色综合久久久久综合| 国产ts变态重口人妖hd| 亚洲免费成人av电影| 性欧美videos高清hd4k| 国产91在线高潮白浆在线观看| 久久久久久久久成人| 日本在线高清视频一区| 国内揄拍国内精品久久| 三级视频中文字幕| 91在线视频播放地址| 日韩三级久久久| 色婷婷香蕉在线一区二区| 亚洲免费不卡视频| 久久精品最新地址| 精品无人乱码一区二区三区| 国产伦精品一区二区三区四区视频 | 午夜毛片在线观看| 欧美成人性战久久| 老司机99精品99| 国产精品久久久久久久久久99| 欧美电影完整版在线观看| 久久久99精品视频| 久久精品国产99久久6| 国产三级视频网站| 精品国产1区2区| 亚洲精品国产suv一区| 播播国产欧美激情| 91亚洲精品| 日韩精品一线二线三线| 国产美女诱惑一区二区| 北京富婆泄欲对白| 亚洲主播在线播放| 午夜精品久久久久久久99| 久久成人在线视频| 高清国产一区二区三区四区五区| 视频一区二区三| 日本视频在线一区| jizz中文字幕| 色婷婷av一区二区三区gif | 97人人澡人人爽91综合色| 色撸撸在线观看| 国产一区二区三区国产| 国产一二三区精品| 91精品国产综合久久久久久漫画| 午夜在线视频播放| 国产综合久久久久久| 91影院成人| 日本在线观看视频一区| 亚洲视频 欧洲视频| 97在线播放免费观看| 日韩在线观看网站| av在线国产精品| aaa免费在线观看| 国产黑丝在线一区二区三区| 在线免费日韩av| 欧美成va人片在线观看| 国产91足控脚交在线观看| 国产私拍一区| 欧美亚洲一级| www亚洲色图| 制服丝袜成人动漫| 亚洲h片在线看| 国产在线视频欧美一区二区三区| 99精品国产在热久久下载| 狠狠人妻久久久久久综合蜜桃| 日韩欧美中文字幕在线播放| 精品999视频| 成人午夜高潮视频| 狠色狠色综合久久| 岛国精品资源网站| 色婷婷久久综合| 自拍视频在线网| 99久久无色码| 老鸭窝毛片一区二区三区| 快灬快灬一下爽蜜桃在线观看| 欧美精品一卡二卡| 国产极品人妖在线观看| 欧美连裤袜在线视频| 青青草国产精品亚洲专区无| 青青草原在线免费观看| 亚洲国产另类 国产精品国产免费| 欧美成人黑人| 老司机午夜网站| 26uuu亚洲综合色| 国产又粗又猛视频| 97免费视频在线播放| 热久久天天拍国产| 亚洲一区二区三区黄色| 在线观看亚洲一区| 午夜伦理大片视频在线观看| 久久久久久九九| 国内精品视频666| 青青草免费观看视频| 精品国产一区二区三区久久| 成人动漫视频| xx欧美撒尿嘘撒尿xx| 亚洲国产成人91porn| av大片在线播放| 狠狠色狠狠色综合人人| 精品一区二区三区在线播放视频| www.天天色| 久久艳片www.17c.com| 国产亚洲电影| 欧美性生交xxxxx|