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

亚洲国产欧美另类丝袜| 久久99影视| 国产精品影音先锋| 亚洲成av人片在线观看香蕉| 一区二区在线观| 无码人妻熟妇av又粗又大| 日韩高清一区| 91麻豆swag| 中文字幕国产亚洲| 欧美xxxxx在线视频| 91精品国产乱码久久| 国内精品视频| 成人av影院在线| 亚洲美女av黄| 国产一区二区三区精彩视频| 亚洲天堂国产精品| 精品国产一区二区三区久久久樱花 | 波多野结衣作品集| 亚洲天堂久久久久| 日韩av密桃| 亚洲一区二区美女| 成人精品一二区| 亚洲黄色小说视频| 日韩成人高清| 成人综合婷婷国产精品久久免费| 欧美成人精品在线| 欧美高清精品一区二区| 国产永久免费高清在线观看| 亚洲欧美亚洲| 精品国产免费视频| 97碰在线视频| 一本色道久久综合精品婷婷| 欧美好骚综合网| 欧美日韩中文在线观看| 成人av资源网| 国产成人精品片| 天堂99x99es久久精品免费| 日韩人体视频一二区| 亚洲bt天天射| 亚洲精品成人av久久| 国产综合色激情| 波多野结衣中文字幕一区 | 国产亚洲欧美精品久久久www| www.久久99| 亚洲永久免费av| 精品无码久久久久久久动漫| 黄色一级片中国| 国产精品99| 一区二区三区四区在线播放 | 爱情岛论坛成人| 亚洲欧美日本在线观看| 日韩电影一区二区三区四区| 少妇精69xxtheporn| 欧美成人精品欧美一级乱| 成人高清免费观看mv| 久久成人精品| 亚洲精品福利在线观看| 亚洲视频在线观看一区二区三区| 亚洲日本在线播放| 久久国产日韩欧美精品| 一区二区欧美亚洲| aaa黄色大片| 伊人影院蕉久影院在线播放| 激情小说亚洲一区| 国产91精品青草社区| 国产精品酒店视频| 高清日韩欧美| 欧美日韩一卡二卡| 搞av.com| 免费a级人成a大片在线观看| 成人免费视频视频在线观看免费 | 狂野欧美xxxx韩国少妇| 亚洲欧洲色图综合| 国产在线一区二| 亚洲影视一区二区| 中文一区二区| 亚洲乱码一区av黑人高潮| 特级黄色片视频| 欧美xxxx做受欧美护士| 亚洲综合色视频| 亚洲精品高清国产一线久久| 一级全黄少妇性色生活片| 亚洲在线播放| 久久91精品国产| 亚洲女同二女同志奶水| 日韩av中文字幕一区| 欧美日韩在线视频一区二区| 香港三级日本三级a视频| 乱色精品无码一区二区国产盗| 亚洲国产日韩在线| 久久不射热爱视频精品| 亚洲综合自拍网| 播放一区二区| 欧美日韩精品二区| 日韩免费三级| 视频三区在线观看| 不卡电影一区二区三区| 99国产盗摄| 国产精品100| 久久中文字幕二区| 亚洲大胆人体在线| 北条麻妃av高潮尖叫在线观看| 成入视频在线观看| 亚洲一区二区不卡免费| 亚洲av综合色区| 麻豆视频在线免费观看| 欧美国产一区视频在线观看| 97超级碰碰| av中文字幕免费在线观看| 久久精品免费看| 国产精品久久久久久久久久三级 | 紧身裙女教师波多野结衣| 精品欠久久久中文字幕加勒比| 欧美一区永久视频免费观看| 久久精品久久99| 天堂中文最新版在线中文| 亚洲sss视频在线视频| 日本一区高清不卡| 福利在线观看| 中文字幕av资源一区| 亚洲不卡1区| 色视频在线看| 国产午夜久久久久| 国产精品免费观看高清| 日本高清视频免费看| av一区二区久久| 久久久久久国产精品mv| 国产av精国产传媒| 国产99久久精品| 成人91视频| 日本wwwxxxx| 国产精品一区免费视频| 国产高清精品一区| av手机免费看| 成人午夜碰碰视频| 久久久久久99| 91xxx在线观看| 亚洲欧美经典视频| a天堂资源在线观看| 92久久精品| 亚洲色图欧洲色图| 人妻无码久久一区二区三区免费| 成视频免费观看在线看| 香港成人在线视频| 成人黄色片视频| 国产自产自拍视频在线观看| 亚洲一区中文日韩| 国产盗摄视频在线观看| 巨大荫蒂视频欧美大片| 亚洲国产精品久久一线不卡| 国产三区在线视频| 国产免费拔擦拔擦8x在线播放| 亚洲国产精品影院| 免费看a级黄色片| 青草伊人久久| 日韩欧美国产1| 尤物视频最新网址| 亚洲精品电影| 热久久99这里有精品| 在线观看视频中文字幕| 丁香一区二区三区| 国产区一区二区| 午夜老司机在线观看| 亚洲一区二区三区四区五区中文| 成人在线免费观看视频网站| 色呦呦在线播放| 午夜视频一区在线观看| 久久久精品高清| 羞羞色国产精品网站| 久久久国产精彩视频美女艺术照福利| 日韩av黄色片| 九色综合狠狠综合久久| 精品一区日韩成人| 综合久久2019| 欧美天堂亚洲电影院在线播放| 国产51自产区| 久久av网址| 高清欧美性猛交xxxx| 欧美三级一区二区三区| 国产麻豆精品theporn| 日本三级中国三级99人妇网站| 国产福利免费在线观看| 国产精品久久久久久福利一牛影视| 91丨porny丨探花| 欧美9999| 亚洲精品一区中文| 国产真人真事毛片| 狠狠久久亚洲欧美| 先锋影音一区二区三区| 国产日产一区二区三区| 欧美中文字幕一区二区三区| 一级黄色高清视频| 日本中文字幕在线一区| 久久久久五月天| hs视频在线观看| 久久综合色8888| 天天综合中文字幕| www.youjizz.com在线| 在线这里只有精品| 精品夜夜澡人妻无码av| 久久在线免费| 国产精品视频免费在线| 国产亚洲依依| 色综合久久久久网| 91香蕉视频免费看| 国产成人精品免费视| 清纯唯美亚洲综合| 国内精品久久久久久久久久久| 97se亚洲国产综合自在线观| 青青青在线视频播放| jizz性欧美23| 久久久久久久久爱| 亚洲字幕av一区二区三区四区| 成人在线视频首页| 亚洲一区二区在线看| 超碰在线视屏| 日韩精品黄色网| 国偷自拍第113页| 久久久亚洲精品石原莉奈| xxxxxx在线观看| 日韩中文在线| 色青青草原桃花久久综合| 一级aaaa毛片| 久久九九久精品国产免费直播| 久久无码高潮喷水| 欧美亚洲激情| 欧美最猛性xxxxx(亚洲精品)| 三级国产在线观看| 亚洲小说欧美激情另类| 亚洲综合婷婷久久| 在线日本制服中文欧美| 午夜精品久久久久久久男人的天堂 | 伊人久久免费视频| 日韩无码精品一区二区三区| 久久影院电视剧免费观看| 国产精品69久久久| 一本久久青青| 国产在线视频91| av在线首页| 91久久精品网| 精品自拍偷拍视频| 成人av在线播放网址| 久久午夜夜伦鲁鲁一区二区| 久久夜色精品国产噜噜av小说| 欧洲成人性视频| 美女av在线播放| 欧美日本一道本在线视频| 国产传媒在线看| 岛国精品在线播放| 中文字幕人妻熟女人妻洋洋| 成人短视频软件网站大全app| 欧美极品少妇xxxxⅹ喷水| 欧美精品a∨在线观看不卡| 激情久久av一区av二区av三区| 精品无码人妻一区二区免费蜜桃| 亚洲永久字幕| 农村寡妇一区二区三区| 91视频亚洲| 久久电影一区二区| 国产在线观看网站| 在线精品视频免费观看| 久草资源在线视频| 成人福利视频网站| 在线黄色免费看| 久久久久国产| 99视频国产精品免费观看| 国产在线xxx| 色噜噜国产精品视频一区二区| 中文字幕av片| 一色屋精品亚洲香蕉网站| 30一40一50老女人毛片| 日韩在线一区二区| 日韩日韩日韩日韩日韩| 丝袜av一区| 97人人香蕉| 久久69成人| 欧美日韩国产二区| 日本激情一区二区三区| 一本大道av伊人久久综合| 免费在线观看亚洲| 日韩在线视频免费| 国产v综合v亚洲欧美久久| wwwav网站| 婷婷开心激情综合| 五月天丁香激情| av中文一区二区三区| 1314成人网| 亚洲aaa在线观看| 日韩欧美视频在线| 五月婷婷中文字幕| 亚洲一区二区三区精品在线| 女同久久另类69精品国产| 国产亚洲精品久| 深夜福利网站在线观看| 亚洲一区欧美激情| 毛片在线播放视频| 日韩中字在线| 精品国产乱码久久久久久丨区2区| 日韩一区二区三区在线免费观看 | 91精品欧美福利在线观看| www.亚洲激情| 欧美性猛交xxxx免费看漫画| 懂色av.com| 亚洲国产欧美另类丝袜| 久久精品美女视频| 国产欧美日韩不卡免费| 中文字幕一区二区三区人妻在线视频| 捆绑紧缚一区二区三区视频| 男女视频在线看| 国产综合自拍| 男人天堂av片| 1024日韩| 日本中文字幕片| 国产一区视频在线观看免费| 日本一级黄视频| 国产一区二区中文| 一本一道久久a久久综合精品| 欧美日韩有码| 亚洲综合欧美日韩| 天天综合一区| 日韩欧美猛交xxxxx无码| 国产精品久久| 又粗又黑又大的吊av| 久久精品网址| 91视频 -- 69xx| 欧美三级乱码| 手机在线视频你懂的| 综合一区在线| 亚洲aⅴ天堂av在线电影软件| 婷婷亚洲成人| 午夜精品一区二区三区四区| 国产成人精品福利| 欧美精品免费观看二区| 清纯唯美亚洲综合一区| 欧美裸体网站| 久久中文字幕av一区二区不卡| 欧美另类一区| 91精品国产乱码久久久久久久| 黄色激情在线视频| 久久精品亚洲| 免费高清视频在线观看| 久久国产乱子精品免费女| 亚洲中文字幕久久精品无码喷水| 蜜桃视频一区二区三区| 最新中文字幕免费视频| 国产乱码精品一区二区三区五月婷| 91人人澡人人爽| 久久久精品综合| 1024手机在线视频| 日韩欧美国产成人| 国产精品九九九九| 日韩电影在线观看中文字幕| 99青草视频在线播放视| 久久久久久久久国产精品| 欧美韩国亚洲| 国产精品亚洲片夜色在线| 亚洲一二av| 天堂va久久久噜噜噜久久va| 成人中文在线| 精品视频免费在线播放| 免费人成精品欧美精品| 91精品啪在线观看国产| 国产精品看片你懂得| 亚洲少妇xxx| 色综合天天视频在线观看| 国产成人av免费| 欧美午夜一区二区三区免费大片| 午夜精品在线播放| 一夜七次郎国产精品亚洲| 欧美videos极品另类| 久久久精品国产| 欧美粗大gay| 国产精品视频午夜| 偷拍自拍一区| 青青成人在线| 四季av一区二区三区免费观看| 国产资源在线视频| 国产一区二区三区免费在线观看| 91中文字幕永久在线| 国产精品视频一二三| 国产精品自拍99| 欧美日韩久久一区| 欧美一区二区三区少妇| 色偷偷偷综合中文字幕;dd| free性欧美hd另类精品| 国产乱人伦真实精品视频| 夜夜躁狠狠躁日日躁2021日韩| 国产av熟女一区二区三区| 久久99日本精品| 无码少妇一区二区| 亚洲人成网站在线| 中文字幕一区二区三区波野结| 亚洲欧美制服第一页| 9lporm自拍视频区在线| 成人影片在线播放| 欧洲毛片在线视频免费观看| 成年丰满熟妇午夜免费视频| 国产人成精品一区二区三| 久久人妻少妇嫩草av无码专区| 欧美激情一二三区|