gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

詳細解析MySQL 8.x中新增了三種索引方式(總結分享)

本篇文章給大家?guī)砹薓ySQL 8.x版本中新增的三大索引的相關知識。MySQL 8.x中新增了三種索引方式隱藏索引、降序索引和函數(shù)索引,希望對大家有幫助。

詳細解析MySQL 8.x中新增了三種索引方式(總結分享)

一、隱藏索引

1.隱藏索引概述

  • MySQL 8.0開始支持隱藏索引(invisible index),不可見索引。
  • 隱藏索引不會被優(yōu)化器使用,但仍然需要進行維護。
  • 應用場景:軟刪除、灰度發(fā)布。

在之前MySQL的版本中,只能通過顯式的方式刪除索引,如果刪除后發(fā)現(xiàn)索引刪錯了,又只能通過創(chuàng)建索引的方式將刪除的索引添加回來,如果數(shù)據(jù)庫中的數(shù)據(jù)量非常大,或者表比較大,這種操作的成本非常高。

在MySQL 8.0中,只需要將這個索引先設置為隱藏索引,使查詢優(yōu)化器不再使用這個索引,但是,此時這個索引還是需要MySQL后臺進行維護,當確認將這個索引設置為隱藏索引系統(tǒng)不會受到影響時,再將索引徹底刪除。這就是軟刪除功能。

灰度發(fā)布,就是說創(chuàng)建索引時,首先將索引設置為隱藏索引,通過修改查詢優(yōu)化器的開關,使隱藏索引對查詢優(yōu)化器可見,通過explain對索引進行測試,確認這個索引有效,某些查詢可以使用到這個索引,就可以將其設置為可見索引,完成灰度發(fā)布的效果。

2.隱藏索引操作

(1)登錄MySQL,創(chuàng)建testdb數(shù)據(jù)庫,并在數(shù)據(jù)庫中創(chuàng)建一張測試表t1

mysql> create database if not exists testdb; Query OK, 1 row affected (0.58 sec) mysql> use testdb; Database changed mysql> create table if not exists t1(i int, j int); Query OK, 0 rows affected (0.05 sec)

(2)在字段i上創(chuàng)建索引,如下所示。

mysql> create index i_idx on t1(i); Query OK, 0 rows affected (0.34 sec) Records: 0  Duplicates: 0  Warnings: 0

(3)在字段j上創(chuàng)建隱藏索引,創(chuàng)建隱藏索引時,只需要在創(chuàng)建索引的語句后面加上invisible關鍵字,如下所示

mysql> create index j_idx on t1(j) invisible; Query OK, 0 rows affected (0.01 sec) Records: 0  Duplicates: 0  Warnings: 0

(4)查看t1表中的索引情況,如下所示

mysql> show index from t1 G *************************** 1. row ***************************         Table: t1    Non_unique: 1      Key_name: i_idx  Seq_in_index: 1   Column_name: i     Collation: A   Cardinality: 0      Sub_part: NULL        Packed: NULL          Null: YES    Index_type: BTREE       Comment:  Index_comment:        Visible: YES    Expression: NULL *************************** 2. row ***************************         Table: t1    Non_unique: 1      Key_name: j_idx  Seq_in_index: 1   Column_name: j     Collation: A   Cardinality: 0      Sub_part: NULL        Packed: NULL          Null: YES    Index_type: BTREE       Comment:  Index_comment:        Visible: NO    Expression: NULL 2 rows in set (0.02 sec)

可以看到t1表中有兩個索引,一個是i_idx,一個是j_idx,i_idx的Visible屬性為YES,表示這個索引可見; j_idx的Visibles屬性為NO,表示這個索引不可見。

(5)查看查詢優(yōu)化器對這兩個索引的使用情況。
首先,使用字段i進行查詢,如下所示。

mysql> explain select * from t1 where i = 1 G *************************** 1. row ***************************            id: 1   select_type: SIMPLE         table: t1    partitions: NULL          type: ref possible_keys: i_idx           key: i_idx       key_len: 5           ref: const          rows: 1      filtered: 100.00         Extra: NULL 1 row in set, 1 warning (0.02 sec) 可以看到,查詢優(yōu)化器會使用i字段的索引進行優(yōu)化。 接下來,使用字段j進行查詢,如下所示。 mysql> explain select * from t1 where j = 1 G *************************** 1. row ***************************            id: 1   select_type: SIMPLE         table: t1    partitions: NULL          type: ALL possible_keys: NULL           key: NULL       key_len: NULL           ref: NULL          rows: 1      filtered: 100.00         Extra: Using where 1 row in set, 1 warning (0.00 sec)

可以看到,查詢優(yōu)化器并沒有使用j字段上的隱藏索引,會使用全表掃描的方式查詢數(shù)據(jù)。

(6)使隱藏索引對優(yōu)化器可見
在MySQL 8.x 中提供了一種新的測試方式,可以通過優(yōu)化器的一個開關來打開某個設置,使隱藏索引對查詢優(yōu)化器可見。
查看查詢優(yōu)化器的開關,如下所示。

mysql> select @@optimizer_switch G  *************************** 1. row *************************** @@optimizer_switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=on,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=on,derived_merge=on,use_invisible_indexes=off,skip_scan=on,hash_join=on 1 row in set (0.00 sec)

這里,可以看到如下一個屬性值:

use_invisible_indexes=off

表示優(yōu)化器是否使用不可見索引,默認為off不使用。
接下來,在MySQL的會話級別使查詢優(yōu)化器使用不可見索引,如下所示。

mysql> set session optimizer_switch="use_invisible_indexes=on"; Query OK, 0 rows affected (0.00 sec)

接下來,再次查看查詢優(yōu)化器的開關設置,如下所示

mysql> select @@optimizer_switch G *************************** 1. row *************************** @@optimizer_switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=on,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=on,derived_merge=on,use_invisible_indexes=on,skip_scan=on,hash_join=on 1 row in set (0.00 sec)

此時,可以看到use_invisible_indexes=on,說明隱藏索引對查詢優(yōu)化器可見了。

再次分析使用t1表的j字段查詢數(shù)據(jù),如下所示。

mysql> explain select * from t1 where j = 1 G *************************** 1. row ***************************            id: 1   select_type: SIMPLE         table: t1    partitions: NULL          type: ref possible_keys: j_idx           key: j_idx       key_len: 5           ref: const          rows: 1      filtered: 100.00         Extra: NULL 1 row in set, 1 warning (0.00 sec)

可以看到,此時查詢優(yōu)化器使用j字段上的隱藏索引來優(yōu)化查詢了。

(7)設置索引的可見與不可見
將字段j上的隱藏索引設置為可見,如下所示。

mysql> alter table t1 alter index j_idx visible; Query OK, 0 rows affected (0.01 sec) Records: 0  Duplicates: 0  Warnings: 0

將字段j上的索引設置為不可見,如下所示。

mysql> alter table t1 alter index j_idx invisible; Query OK, 0 rows affected (0.01 sec) Records: 0  Duplicates: 0  Warnings: 0

(8)MySQL中主鍵不能設置為不可見索引
值得注意的是:在MySQL中,主鍵是不可以設置為不可見的。
在testdb數(shù)據(jù)庫中創(chuàng)建一張測試表t2,如下所示。

mysql> create table t2(i int not null); Query OK, 0 rows affected (0.01 sec)

接下來,在t2表中創(chuàng)建一個不可見主鍵,如下所示

mysql> alter table t2 add primary key pk_t2(i) invisible;  ERROR 3522 (HY000): A primary key index cannot be invisible

可以看到,此時SQL語句報錯,主鍵不能被設置為不可見索引。

二、降序索引

1.降序索引概述

  • MySQL 8.0開始真正支持降序索引(descending index)。
  • 只有InnoDB存儲引擎支持降序索引,只支持BTREE降序索引。
  • MySQL 8.0不再對GROUP BY操作進行隱式排序

2.降序索引操作

(1)MySQL 5.7中支持的語法
首先,在MySQL 5.7中創(chuàng)建測試數(shù)據(jù)庫testdb,在數(shù)據(jù)庫testdb中創(chuàng)建測試表t2,如下所示。

mysql> create database if not exists testdb; Query OK, 0 rows affected (0.71 sec) mysql> use testdb; Database changed mysql> create table if not exists t2(c1 int, c2 int, index idx1(c1 asc, c2 desc)); Query OK, 0 rows affected (0.71 sec)

其中,在t2表中創(chuàng)建了名為idx1的索引,索引中c1字段升序排序,c2字段降序排序。

接下來,查看t2表的創(chuàng)建信息,如下所示

mysql> show create table t2 G*************************** 1. row ***************************        Table: t2Create Table: CREATE TABLE `t2` (   `c1` int(11) DEFAULT NULL,   `c2` int(11) DEFAULT NULL,   KEY `idx1` (`c1`,`c2`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb41 row in set (0.16 sec)

可以看到,MySQL 5.7版本在創(chuàng)建表的信息中,沒有字段c1和c2的排序信息,默認都是升序。

(2)MySQL 8.0中支持的語法
在MySQL 8.x中同樣創(chuàng)建t2表,如下所示

mysql> create table if not exists t2(c1 int, c2 int, index idx1(c1 asc, c2 desc)); Query OK, 0 rows affected, 1 warning (0.00 sec)

接下來,查看t2表的創(chuàng)建信息,如下所示

mysql> show create table t2 G*************************** 1. row ***************************        Table: t2Create Table: CREATE TABLE `t2` (   `c1` int(11) DEFAULT NULL,   `c2` int(11) DEFAULT NULL,   KEY `idx1` (`c1`,`c2` DESC)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec)

可以看到,在MySQL 8.x中,創(chuàng)建的索引中存在字段的排序信息。

(3)MySQL 5.7中查詢優(yōu)化器對索引的使用情況
首先,在表t2中插入一些數(shù)據(jù),如下所示。

mysql> insert into t2(c1, c2) values(1, 100), (2, 200), (3, 150), (4, 50); Query OK, 4 rows affected (0.19 sec) Records: 4  Duplicates: 0  Warnings: 0

接下來,查詢t2表中的數(shù)據(jù),如下所示。

mysql> select * from t2; +------+------+ | c1   | c2   | +------+------+ |    1 |  100 | |    2 |  200 | |    3 |  150 | |    4 |   50 | +------+------+ 4 rows in set (0.00 sec)

可以看到,t2表中的數(shù)據(jù)插入成功。

接下來,查看查詢優(yōu)化器對索引的使用情況,這里,查詢語句按照c1字段升序,按照c2字段降序,如下所示。

mysql> explain select * from t2 order by c1, c2 desc G*************************** 1. row ***************************            id: 1   select_type: SIMPLE         table: t2    partitions: NULL          type: indexpossible_keys: NULL           key: idx1       key_len: 10           ref: NULL          rows: 4      filtered: 100.00         Extra: Using index; Using filesort1 row in set, 1 warning (0.12 sec)

可以看到,在MySQL 5.7中,按照c2字段進行降序排序,并沒有使用索引。

(4)MySQL 8.x中查詢優(yōu)化器對降序索引的使用情況。
查看查詢優(yōu)化器對降序索引的使用情況。
首先,在表t2中插入一些數(shù)據(jù),如下所示。

mysql> insert into t2(c1, c2) values(1, 100), (2, 200), (3, 150), (4, 50); Query OK, 4 rows affected (0.00 sec) Records: 4  Duplicates: 0  Warnings: 0

接下來,查詢t2表中的數(shù)據(jù),如下所示。

mysql> select * from t2; +------+------+ | c1   | c2   | +------+------+ |    1 |  100 | |    2 |  200 | |    3 |  150 | |    4 |   50 | +------+------+ 4 rows in set (0.00 sec)

可以看到,t2表中的數(shù)據(jù)插入成功。

在MySQL中如果創(chuàng)建的是升序索引,則指定查詢的時候,只能按照升序索引的方式指定查詢,這樣才能使用升序索引。

接下來,查看查詢優(yōu)化器對索引的使用情況,這里,查詢語句按照c1字段升序,按照c2字段降序,如下所示。

mysql> explain select * from t2 order by c1, c2 desc G*************************** 1. row ***************************            id: 1   select_type: SIMPLE         table: t2    partitions: NULL          type: indexpossible_keys: NULL           key: idx1       key_len: 10           ref: NULL          rows: 4      filtered: 100.00         Extra: Using index1 row in set, 1 warning (0.00 sec)

可以看到,在MySQL 8.x中,按照c2字段進行降序排序,使用了索引。

使用c1字段降序,c2字段升序排序,如下所示。

mysql> explain select * from t2 order by c1 desc, c2 G*************************** 1. row ***************************            id: 1   select_type: SIMPLE         table: t2    partitions: NULL          type: indexpossible_keys: NULL           key: idx1       key_len: 10           ref: NULL          rows: 4      filtered: 100.00         Extra: Backward index scan; Using index1 row in set, 1 warning (0.00 sec)

可以看到,在MySQL 8.x中仍然可以使用索引,并使用了索引的反向掃描。

(5)MySQL 8.x中不再對GROUP BY進行隱式排序

在MySQL 5.7中執(zhí)行如下命令,按照c2字段進行分組,查詢每組中數(shù)據(jù)的記錄條數(shù)。

mysql> select count(*), c2 from t2 group by c2; +----------+------+ | count(*) | c2   | +----------+------+ |        1 |   50 | |        1 |  100 | |        1 |  150 | |        1 |  200 | +----------+------+ 4 rows in set (0.18 sec)

可以看到,在MySQL 5.7中,在c2字段上進行了排序操作。

在MySQL 8.x中執(zhí)行如下命令,按照c2字段進行分組,查詢每組中數(shù)據(jù)的記錄條數(shù)。

mysql> select count(*), c2 from t2 group by c2; +----------+------+ | count(*) | c2   | +----------+------+ |        1 |  100 | |        1 |  200 | |        1 |  150 | |        1 |   50 | +----------+------+ 4 rows in set (0.00 sec)

可以看到,在MySQL 8.x中,在c2字段上并沒有進行排序操作。

在MySQL 8.x中如果需要對c2字段進行排序,則需要使用order by語句明確指定排序規(guī)則,如下所示。

mysql> select count(*), c2 from t2 group by c2 order by c2; +----------+------+ | count(*) | c2   | +----------+------+ |        1 |   50 | |        1 |  100 | |        1 |  150 | |        1 |  200 | +----------+------+ 4 rows in set (0.00 sec)

三、函數(shù)索引

1.函數(shù)索引概述

  • MySQL 8.0.13開始支持在索引中使用函數(shù)(表達式)的值。
  • 支持降序索引,支持JSON數(shù)據(jù)的索引
  • 函數(shù)索引基于虛擬列功能實現(xiàn)

2.函數(shù)索引操作

(1)創(chuàng)建測試表t3
在testdb數(shù)據(jù)庫中創(chuàng)建一張測試表t3,如下所示。

mysql> create table if not exists t3(c1 varchar(10), c2 varchar(10)); Query OK, 0 rows affected (0.01 sec)

(2)創(chuàng)建普通索引
在c1字段上創(chuàng)建普通索引

mysql> create index idx1 on t3(c1); Query OK, 0 rows affected (0.01 sec) Records: 0  Duplicates: 0  Warnings: 0

(3)創(chuàng)建函數(shù)索引
在c2字段上創(chuàng)建一個將字段值轉(zhuǎn)化為大寫的函數(shù)索引,如下所示。

mysql> create index func_index on t3 ((UPPER(c2))); Query OK, 0 rows affected (0.02 sec) Records: 0  Duplicates: 0  Warnings: 0

(4)查看t3表上的索引信息,如下所示。

mysql> show index from t3 G*************************** 1. row ***************************         Table: t3    Non_unique: 1      Key_name: idx1  Seq_in_index: 1   Column_name: c1     Collation: A   Cardinality: 0      Sub_part: NULL        Packed: NULL          Null: YES    Index_type: BTREE       Comment:  Index_comment:        Visible: YES    Expression: NULL*************************** 2. row ***************************         Table: t3    Non_unique: 1      Key_name: func_index  Seq_in_index: 1   Column_name: NULL     Collation: A   Cardinality: 0      Sub_part: NULL        Packed: NULL          Null: YES    Index_type: BTREE       Comment:  Index_comment:        Visible: YES    Expression: upper(`c2`)2 rows in set (0.01 sec)

(5)查看查詢優(yōu)化器對兩個索引的使用情況
首先,查看c1字段的大寫值是否等于某個特定的值,如下所示。

mysql> explain select * from t3 where upper(c1) = 'ABC' G*************************** 1. row ***************************            id: 1   select_type: SIMPLE         table: t3    partitions: NULL          type: ALLpossible_keys: NULL           key: NULL       key_len: NULL           ref: NULL          rows: 1      filtered: 100.00         Extra: Using where1 row in set, 1 warning (0.00 sec)

可以看到,沒有使用索引,進行了全表掃描操作。

接下來,查看c2字段的大寫值是否等于某個特定的值,如下所示。

mysql> explain select * from t3 where upper(c2) = 'ABC' G  *************************** 1. row ***************************            id: 1   select_type: SIMPLE         table: t3    partitions: NULL          type: ref possible_keys: func_index          key: func_index       key_len: 43           ref: const         rows: 1      filtered: 100.00         Extra: NULL1 row in set, 1 warning (0.00 sec)

可以看到,使用了函數(shù)索引。

(6)函數(shù)索引對JSON數(shù)據(jù)的索引
首先,創(chuàng)建測試表emp,并對JSON數(shù)據(jù)進行索引,如下所示。

mysql> create table if not exists emp(data json, index((CAST(data->>'$.name' as char(30))))); Query OK, 0 rows affected (0.02 sec)

上述SQL語句的解釋如下:

  • JSON數(shù)據(jù)長度不固定,如果直接對JSON數(shù)據(jù)進行索引,可能會超出索引長度,通常,會只截取JSON數(shù)據(jù)的一部分進行索引。
  • CAST()類型轉(zhuǎn)換函數(shù),把數(shù)據(jù)轉(zhuǎn)化為char(30)類型。使用方式為CAST(數(shù)據(jù) as 數(shù)據(jù)類型)。
  • data ->> '$.name’表示JSON的運算符

簡單的理解為,就是取name節(jié)點的值,將其轉(zhuǎn)化為char(30)類型。

接下來,查看emp表中的索引情況,如下所示。

mysql> show index from emp G *************************** 1. row ***************************         Table: emp    Non_unique: 1      Key_name: functional_index  Seq_in_index: 1   Column_name: NULL     Collation: A   Cardinality: 0      Sub_part: NULL        Packed: NULL          Null: YES    Index_type: BTREE       Comment:  Index_comment:        Visible: YES    Expression: cast(json_unquote(json_extract(`data`,_utf8mb4'$.name')) as char(30) charset utf8mb4) 1 row in set (0.00 sec)

(7)函數(shù)索引基于虛擬列實現(xiàn)
首先,查看t3表的信息,如下所示。

mysql> desc t3; +-------+-------------+------+-----+---------+-------+ | Field | Type        | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | c1    | varchar(10) | YES  | MUL | NULL    |       | | c2    | varchar(10) | YES  |     | NULL    |       | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)

在c1上建立了普通索引,在c2上建立了函數(shù)索引。

接下來,在t3表中添加一列c3,模擬c2上的函數(shù)索引,如下所示。

mysql> alter table t3 add column c3 varchar(10) generated always as (upper(c1)); Query OK, 0 rows affected (0.03 sec) Records: 0  Duplicates: 0  Warnings: 0

c3列是一個計算列,c3字段的值總是使用c1字段轉(zhuǎn)化為大寫的結果。

接下來,向t3表中插入一條數(shù)據(jù),其中,c3列是一個計算列,c3字段的值總是使用c1字段轉(zhuǎn)化為大寫的結果,在插入數(shù)據(jù)的時候,不需要為c3列插入數(shù)據(jù),如下所示。

mysql> insert into t3(c1, c2) values ('abc', 'def'); Query OK, 1 row affected (0.00 sec)

查詢t3表中的數(shù)據(jù),如下所示。

mysql> select * from t3; +------+------+------+ | c1   | c2   | c3   | +------+------+------+ | abc  | def  | ABC  | +------+------+------+ 1 row in set (0.00 sec)

可以看到,并不需要向c3列中插入數(shù)據(jù),c3列的數(shù)據(jù)為c1字段的大寫結果數(shù)據(jù)。

如果想模擬函數(shù)索引的效果,則可以使用如下方式。
首先,在c3列上添加索引,如下所示。

mysql> create index idx3 on t3(c3); Query OK, 0 rows affected (0.11 sec) Records: 0  Duplicates: 0  Warnings: 0

接下來,再次查看c1字段的大寫值是否等于某個特定的值,如下所示。

mysql> explain select * from t3 where upper(c1) = 'ABC' G*************************** 1. row ***************************            id: 1   select_type: SIMPLE         table: t3    partitions: NULL          type: ref possible_keys: idx3          key: idx3       key_len: 43           ref: const         rows: 1      filtered: 100.00         Extra: NULL1 row in set, 1 warning (0.00 sec)

此時,就使用了idx3索引。

推薦學習:mysql視頻教程

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
日本少妇高潮喷水视频| www.黄色网址.com| 99视频在线视频| 中文字幕国产高清| 国产一区二区网| 乌克兰美女av| 亚洲 欧美 日韩 国产综合 在线| 激情五月俺来也| 免费国产a级片| 午夜在线视频免费观看| 国产97在线 | 亚洲| 精品国产一区二区三区在线| 日韩高清第一页| 在线观看污视频| av五月天在线| 18禁网站免费无遮挡无码中文| 久草青青在线观看| 黄色国产一级视频| 丁香花在线影院观看在线播放| 国产麻豆电影在线观看| 亚洲精品第三页| 亚洲免费999| 在线成人免费av| 佐佐木明希av| 777精品久无码人妻蜜桃| av女优在线播放| 色综合av综合无码综合网站| 欧美这里只有精品| av在线观看地址| 亚洲天堂国产视频| 男人亚洲天堂网| 97在线播放视频| 国产在线播放观看| 国产无限制自拍| 日本熟妇人妻xxxx| 波多野结衣50连登视频| 久久久久久久久久福利| 激情网站五月天| 小早川怜子一区二区三区| 四虎成人在线播放| 青草青青在线视频| 另类小说色综合| 中国老女人av| 国产中文字幕视频在线观看| 欧美aⅴ在线观看| 午夜激情在线观看视频| 色呦呦网站入口| 美女黄色片视频| 日韩人妻无码精品久久久不卡| 午夜精品久久久久久久无码| 午夜免费高清视频| 欧洲av无码放荡人妇网站| 小泽玛利亚视频在线观看| 国产传媒久久久| 亚洲激情在线看| 亚洲色成人一区二区三区小说| 亚洲制服在线观看| 无码精品a∨在线观看中文| 国产又黄又爽免费视频| 久久久久久香蕉| 久久国产精品视频在线观看| 亚洲欧美日韩网站| 欧美日韩久久婷婷| 久久黄色片网站| 色悠悠久久综合网| 国产三级日本三级在线播放| 91av资源网| 国产欧美高清在线| 国产午夜伦鲁鲁| 日韩精品免费播放| 97视频在线免费播放| 亚洲中文字幕无码不卡电影| 久久成人免费观看| 一二三四视频社区在线| www.com毛片| 玩弄japan白嫩少妇hd| 色悠悠久久综合网| 亚洲欧洲日本精品| 成人污网站在线观看| av免费看网址| 欧美婷婷精品激情| 在线观看成人免费| 国产日韩一区二区在线观看| 性生活免费在线观看| 超碰免费在线公开| 精品欧美一区免费观看α√| 超碰在线97免费| 六月婷婷激情网| 免费涩涩18网站入口| 久久精品久久99| 免费无码毛片一区二三区| 激情 小说 亚洲 图片: 伦| 99国产精品久久久久久| 啊啊啊一区二区| 国产日韩欧美精品在线观看| 在线观看国产一级片| 亚洲 高清 成人 动漫| 日本三级中文字幕在线观看| 亚洲一区二区福利视频| 久久精品视频91| 日本中文字幕亚洲| 国产精品999视频| 五月六月丁香婷婷| 精品欧美一区免费观看α√| 免费一级特黄毛片| 国产精品www在线观看| 日韩av黄色网址| 在线观看成人免费| 成人午夜精品久久久久久久蜜臀| 182午夜在线观看| 国产91沈先生在线播放| 免费看黄在线看| 三级a三级三级三级a十八发禁止| 韩国一区二区av| 成人手机视频在线| av在线免费观看国产| 一女被多男玩喷潮视频| 国产性生交xxxxx免费| 九九九九九伊人| chinese少妇国语对白| 人体内射精一区二区三区| 91香蕉视频污版| 加勒比av中文字幕| 日日摸天天爽天天爽视频| 国产高清999| 精品少妇无遮挡毛片| 50度灰在线观看| 日本在线一二三区| 国产免费黄色一级片| 高清一区二区视频| 午夜肉伦伦影院| 尤物av无码色av无码| 性欧美18一19内谢| 艹b视频在线观看| 992kp快乐看片永久免费网址| 久久免费视频2| 免费成人进口网站| av在线网站免费观看| caopor在线视频| 男人透女人免费视频| 国产视频在线视频| 超碰超碰在线观看| 91亚洲精品久久久蜜桃借种| 国产aaaaa毛片| 亚洲精品国产一区二区三区| 爱爱爱爱免费视频| 欧美性受黑人性爽| 日本男女交配视频| 草草草在线视频| 男人天堂成人网| 黄色成人在线免费观看| 日韩精品视频一区二区在线观看| 国产一区亚洲二区三区| 亚洲精品mv在线观看| 国产成人无码a区在线观看视频| 91黄色小网站| 午夜在线视频免费观看| 男人靠女人免费视频网站| 亚洲综合色在线观看| 在线观看18视频网站| 亚洲欧美国产中文| www污在线观看| 亚洲欧美日韩一二三区| 欧洲精品在线播放| jizz18女人| 黄色一级一级片| 日韩精品xxxx| 久久视频这里有精品| 成人亚洲免费视频| 免费观看成人网| 国产主播在线看| 999香蕉视频| 日av中文字幕| 少妇一级淫免费放| 国产视频在线视频| 免费国产黄色网址| www黄色在线| 国产精品亚洲a| 成人免费视频久久| 中文字幕第80页| 亚洲77777| 国产女人18毛片| 日本成人xxx| 久久99久久99精品| 日韩欧美视频免费在线观看| 996这里只有精品| 天天摸天天碰天天添| 亚洲精品www.| 一级黄色特级片| 成年人午夜视频在线观看| 日本一极黄色片| 欧美少妇一级片| av免费中文字幕| 男女激烈动态图| 91色国产在线| 欧美黄网在线观看| 嫩草影院国产精品| 无码日本精品xxxxxxxxx| 九九视频精品在线观看| 欧美极品欧美精品欧美|