日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

升級(jí)到MySQL5.7后開發(fā)不得不注意的一些坑

2024-07-25 19:08:38
字體:
供稿:網(wǎng)友

前言

前段時(shí)間,將線上MySQL數(shù)據(jù)庫升級(jí)到了5.7。考慮到可能產(chǎn)生的不兼容性,在升級(jí)之前,確實(shí)也是戰(zhàn)戰(zhàn)兢兢,雖然測(cè)試環(huán)境,開發(fā)環(huán)境早在半年前就已提前升級(jí)。

基于前期的調(diào)研和朋友的反饋,與開發(fā)相關(guān)的主要有兩點(diǎn):

sql_mode

MySQL 5.6中,其默認(rèn)值為"NO_ENGINE_SU BSTITUTION",可理解為非嚴(yán)格模式,譬如,對(duì)自增主鍵插入空字符串'',雖然提示warning,但并不影響自增主鍵的生成。

但在MySQL 5.7中,其就調(diào)整為了嚴(yán)格模式,對(duì)于上面這個(gè),其不會(huì)提示warning,而是直接報(bào)錯(cuò)。

分組求最值

分組求最值的某些寫法在MySQL5.7中得不到預(yù)期結(jié)果,這點(diǎn),相對(duì)來說比較隱蔽。

其中,第一點(diǎn)是可控的,畢竟可以調(diào)整參數(shù)。而第二點(diǎn),卻是不可控的,沒有參數(shù)與之相關(guān),需要開發(fā)Review代碼。

下面具體來看看

測(cè)試數(shù)據(jù)

mysql> select * from emp;+-------+----------+--------+--------+| empno | ename | sal | deptno |+-------+----------+--------+--------+| 1001 | emp_1001 | 100.00 | 10 || 1002 | emp_1002 | 200.00 | 10 || 1003 | emp_1003 | 300.00 | 20 || 1004 | emp_1004 | 400.00 | 20 || 1005 | emp_1005 | 500.00 | 30 || 1006 | emp_1006 | 600.00 | 30 |+-------+----------+--------+--------+rows in set (0.00 sec)

其中,empno是員工編號(hào),ename是員工姓名,sal是工資,deptno是員工所在部門號(hào)。

業(yè)務(wù)的需求是,求出每個(gè)部門中工資最高的員工的相關(guān)信息。

在MySQL5.6中,我們可以通過下面這個(gè)SQL來實(shí)現(xiàn),

SELECT deptno,ename,sal FROM ( SELECT * FROM emp ORDER BY sal DESC ) t GROUP BY deptno;

結(jié)果如下,可以看到,其確實(shí)實(shí)現(xiàn)了預(yù)期效果。

+--------+----------+--------+| deptno | ename | sal |+--------+----------+--------+| 10 | emp_1002 | 200.00 || 20 | emp_1004 | 400.00 || 30 | emp_1006 | 600.00 |+--------+----------+--------+

再來看看MySQL5.7的結(jié)果,竟然不一樣。

+--------+----------+--------+| deptno | ename | sal |+--------+----------+--------+| 10 | emp_1001 | 100.00 || 20 | emp_1003 | 300.00 || 30 | emp_1005 | 500.00 |+--------+----------+--------+

實(shí)際上,在MySQL5.7中,對(duì)該SQL進(jìn)行了改寫,改寫后的SQL可通過explain(extended) + show warnings查看。

mysql> explain select deptno,ename,sal from (select * from emp order by sal desc) t group by deptno;+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-----------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-----------------+| 1 | SIMPLE | emp | NULL | ALL | NULL | NULL | NULL | NULL | 6 | 100.00 | Using temporary |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-----------------+row in set, 1 warning (0.00 sec)mysql> show warnings/G*************************** 1. row *************************** Level: Note Code: 1003Message: /* select#1 */ select `slowtech`.`emp`.`deptno` AS `deptno`,`slowtech`.`emp`.`ename` AS `ename`,`slowtech`.`emp`.`sal` AS `sal` from `slowtech`.`emp` group by `slowtech`.`emp`.`deptno`row in set (0.00 sec)

從改寫后的SQL來看,其消除了子查詢,導(dǎo)致結(jié)果未能實(shí)現(xiàn)預(yù)期效果,官方也證實(shí)了這一點(diǎn),https://bugs.mysql.com/bug.php?id=80131

 

很多人可能不以為然,認(rèn)為沒人會(huì)這樣寫,但在大名鼎鼎的stackoverflow中,該實(shí)現(xiàn)的點(diǎn)贊數(shù)就有116個(gè)-由此可見其受眾之廣,僅次于后面提到的“方法二”(點(diǎn)贊數(shù)206個(gè))。 

https://stackoverflow.com/questions/12102200/get-records-with-max-value-for-each-group-of-grouped-sql-results

需要注意的是,該SQL在5.7中是不能直接運(yùn)行的,其會(huì)提示如下錯(cuò)誤:

ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 't.ename' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

這個(gè)與sql_mode有關(guān),在MySQL 5.7中,sql_mode調(diào)整為了

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

其中,ONLY_FULL_GROUP_BY與group by語句有關(guān),其要求select列表里只能出現(xiàn)分組列(即group by后面的列)和聚合函數(shù)(sum,avg,max等),這也是SQL92的標(biāo)準(zhǔn)。

但在工作中,卻經(jīng)??吹介_發(fā)寫出下面這種SQL。

mysql> select deptno,ename,max(sal) from emp group by deptno;+--------+----------+----------+| deptno | ename | max(sal) |+--------+----------+----------+| 10 | emp_1001 | 200.00 || 20 | emp_1003 | 400.00 || 30 | emp_1005 | 600.00 |+--------+----------+----------+rows in set (0.01 sec)

 實(shí)在不明白,這里的ename在業(yè)務(wù)層有何意義,畢竟,他并不是工資最高的那位員工。 

分組求最值,MySQL的實(shí)現(xiàn)方式

其實(shí)分組求最值是一個(gè)很普遍的需求。在工作中,也經(jīng)常被開發(fā)同事問到。 下面具體來看看,MySQL中有哪些實(shí)現(xiàn)方式。

方法1

SELECT e.deptno, ename, sal FROM emp e, ( SELECT deptno, max( sal ) maxsal FROM emp GROUP BY deptno ) t WHERE e.deptno = t.deptno  AND e.sal = t.maxsal;

方法2

SELECT a.deptno, a.ename, a.sal FROM emp a LEFT JOIN emp b ON a.deptno = b.deptno  AND a.sal < b.sal WHERE b.sal IS NULL;

這兩種實(shí)現(xiàn)方式,其實(shí)是通用的,不僅適用于MySQL,也適用于其它主流關(guān)系型數(shù)據(jù)庫。

方法3

MySQL 8.0推出了分析函數(shù),其也可實(shí)現(xiàn)類似功能。

SELECT deptno, ename, sal FROM ( SELECT deptno, ename, sal, LAST_VALUE ( sal ) OVER ( PARTITION BY deptno ORDER BY sal ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) maxsal  FROM emp  ) a WHERE sal = maxsal;

三種實(shí)現(xiàn)方式的性能對(duì)比

因上面測(cè)試案例的數(shù)據(jù)量太小,三種實(shí)現(xiàn)方式的結(jié)果都是秒出,僅憑執(zhí)行計(jì)劃很難直觀地看出實(shí)現(xiàn)方式的優(yōu)劣。

下面換上數(shù)據(jù)量更大的測(cè)試數(shù)據(jù),官方示例數(shù)據(jù)庫employees中的dept_emp表,https://github.com/datacharmer/test_db

表的相關(guān)信息如下,其中emp_no是員工編號(hào),dept_no是部門編號(hào),from_date是入職日期。

mysql> show create table dept_emp/G*************************** 1. row *************************** Table: dept_empCreate Table: CREATE TABLE `dept_emp` ( `emp_no` int(11) NOT NULL, `dept_no` char(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL, KEY `dept_no` (`dept_no`,`from_date`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_cirow in set (0.00 sec)mysql> select count(*) from dept_emp;+----------+| count(*) |+----------+| 331603 |+----------+row in set (0.09 sec)mysql> select * from dept_emp limit 1;+--------+---------+------------+------------+| emp_no | dept_no | from_date | to_date |+--------+---------+------------+------------+| 10001 | d005 | 1986-06-26 | 9999-01-01 |+--------+---------+------------+------------+row in set (0.00 sec)

方法1

mysql> select d.dept_no,d.emp_no,d.from_date from dept_emp d, (select dept_no,max(from_date) max_hiredate from dept_emp group by dept_no) t where d.dept_no=t.dept_no and d.from_date=t.max_hiredate;…rows in set (0.00 sec)mysql> explain select d.dept_no,d.emp_no,d.from_date from dept_emp d, (select dept_no,max(from_date) max_hiredate from dept_emp group by dept_no) t where d.dept_no=t.dept_no and d.from_date=t.max_hiredate;+----+-------------+------------+------------+-------+---------------+---------+---------+--------------------------+------+----------+----------------------| id | select_type | table | partitions | type | possible_keys | key | key_len | ref   | rows | filtered | Extra  +----+-------------+------------+------------+-------+---------------+---------+---------+--------------------------+------+----------+----------------------| 1 | PRIMARY | <derived2> | NULL | ALL | NULL  | NULL | NULL | NULL   | 9 | 100.00 | Using where  | 1 | PRIMARY | d  | NULL | ref | dept_no | dept_no | 19 | t.dept_no,t.max_hiredate | 5 | 100.00 | NULL   | 2 | DERIVED | dept_emp | NULL | range | dept_no | dept_no | 16 | NULL   | 9 | 100.00 | Using index for group-by+----+-------------+------------+------------+-------+---------------+---------+---------+--------------------------+------+----------+----------------------

方法2

mysql> explain select a.dept_no,a.emp_no,a.from_date from dept_emp a left join dept_emp b on a.dept_no=b.dept_no and a.from_date < b.from_date where b.from_date is null;+----+-------------+-------+------------+------+---------------+---------+---------+--------------------+--------+----------+--------------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref  | rows | filtered | Extra   |+----+-------------+-------+------------+------+---------------+---------+---------+--------------------+--------+----------+--------------------------+| 1 | SIMPLE | a | NULL | ALL | NULL  | NULL | NULL | NULL  | 331008 | 100.00 | NULL   || 1 | SIMPLE | b | NULL | ref | dept_no | dept_no | 16 | slowtech.a.dept_no | 41376 | 19.00 | Using where; Using index |+----+-------------+-------+------------+------+---------------+---------+---------+--------------------+--------+----------+--------------------------+rows in set, 1 warning (0.00 sec)

方法3

mysql> select dept_no,emp_no,from_date from ( select dept_no,emp_no,from_date,last_value(from_date) over(partition by dept_no order by from_date rows between unbounded preceding and unbounded following) max_hiredate from dept_emp) a where from_date=max_hiredate;…rows in set (1.57 sec)mysql> desc select dept_no,emp_no,from_date from ( select dept_no,emp_no,from_date,last_value(from_date) over(partition by dept_no order by from_date rows between unbounded preceding and unbounded following) max_hiredate from dept_emp) a where from_date=max_hiredate;+----+-------------+------------+------------+------+---------------+------+---------+------+--------+----------+----------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra  |+----+-------------+------------+------------+------+---------------+------+---------+------+--------+----------+----------------+| 1 | PRIMARY | <derived2> | NULL | ALL | NULL  | NULL | NULL | NULL | 331008 | 100.00 | Using where || 2 | DERIVED | dept_emp | NULL | ALL | NULL  | NULL | NULL | NULL | 331008 | 100.00 | Using filesort |+----+-------------+------------+------------+------+---------------+------+---------+------+--------+----------+----------------+rows in set, 2 warnings (0.00 sec)

從執(zhí)行時(shí)間上看,

方法1的時(shí)間最短,在有復(fù)合索引(deptno, fromdate)的情況下,結(jié)果瞬間就出來了,即使在沒有索引的情況下,也只消耗了0.75s。

方法2的時(shí)間最長(zhǎng),3個(gè)小時(shí)還是沒出結(jié)果。同樣的數(shù)據(jù),同樣的SQL,放到Oracle查,也消耗了87分49秒。

方法3的時(shí)間比較固定,無論是否存在索引,都維持在1.5s左右,比方法1的耗時(shí)要久。

這里,對(duì)之前提到的,MySQL 5.7中不再兼容的實(shí)現(xiàn)方式也做了個(gè)測(cè)試,在沒有任何索引的情況下,其穩(wěn)定在0.7s(性能并不弱,怪不得有人使用),而同等情況下,方法1穩(wěn)定在0.5s(哈,MySQL 5.6竟然比8.0還快)。但與方法1不同的是,其無法通過索引進(jìn)行優(yōu)化。

從執(zhí)行計(jì)劃上看,

方法1, 先將group by的結(jié)果放到臨時(shí)表中,然后再將該臨時(shí)表作為驅(qū)動(dòng)表,來和dept_emp表進(jìn)行關(guān)聯(lián)查詢。驅(qū)動(dòng)表?。ㄖ挥?條記錄),關(guān)聯(lián)列又有索引,無怪乎,結(jié)果能秒出。

方法2, 兩表關(guān)聯(lián)。其犯了SQL優(yōu)化中的兩個(gè)大忌。

   1. 驅(qū)動(dòng)表太大,其有331603條記錄。

   2. 被驅(qū)動(dòng)表雖然也有索引,但從執(zhí)行計(jì)劃上看,其只使用了復(fù)合索引  (dept_no, from_date)中的dept_no,而dept_no的選擇率又太低,畢竟只有9個(gè)部門。

方法3, 先把分析的結(jié)果放到一個(gè)臨時(shí)表中,然后再對(duì)該臨時(shí)表進(jìn)行處理。其進(jìn)行了兩次全表掃描,一次是針對(duì)dept_emp表,一次是針對(duì)臨時(shí)表。

所以,對(duì)于分組求最值的需求,建議使用方法1,其不僅符合SQL規(guī)范,查詢性能上也是最好的,尤其是在聯(lián)合索引的情況下。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到MYSQL教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
中文字幕亚洲第一| 久久久精品福利| 97视频在线| 亚洲a一级视频| 成人ww免费完整版在线观看| 高清国产一区| 91午夜在线| 日韩在线中文视频| 91精品国产色综合久久久蜜香臀| 中文字幕在线观看国产| 亚洲图片小说综合| 欧美激情一区二区在线| 中文字幕亚洲字幕| 久久91精品视频| 日韩欧美亚洲日产国| 国产成人精品日本亚洲专区61 | 国产不卡视频在线| 91欧美日韩| 国产在线黄色| 欧美黄页在线免费观看| 中文字幕精品一区二| 日韩亚洲欧美中文字幕| 免费精品国产自产拍观看| 日韩高清在线不卡| 免费精品国产自产拍观看| 婷婷久久综合九色国产成人| 中文字幕在线观看亚洲| 中文字幕精品www乱入免费视频| 精品久久香蕉国产线看观看gif| 免费网站看黄yyy222| 在线观看精品国产| 欧美日韩一级视频| 国产婷婷色一区二区三区在线| 中文字幕在线观看国产| 欧美乱大交xxxxx另类| 中文字幕欧美日韩精品| www.中文字幕在线观看| 欧美日韩91| 免费精品国产自产拍观看| 欧美国产一区视频在线观看| 亚洲福利在线视频| 国产一二三区精品视频| 国产免费久久久| 亚洲免费观看视频| 1区不卡电影| 国产欧美日韩综合精品| 欧美日韩精品免费看| 中文字幕日韩国产| 日韩中文字幕第一页| 中文字幕在线看视频国产欧美| 一级日本免费的| 日韩在线二区| 91精品国产手机| 国产欧美久久久精品免费| 91精品国产欧美日韩| 国产成人精品999在线观看| 91精品国产综合久久久久| 中文字幕欧美日韩精品| 久久人人88| 亚洲a级在线播放观看| 午夜亚洲一区| 欧美亚洲综合视频| 日韩精品在线免费看| 国产网站欧美日韩免费精品在线观看 | 欧美一级日韩不卡播放免费| 日韩美女中文字幕| 中文不卡在线| 日本精品在线中文字幕| 日韩久久不卡| 欧美日韩在线精品成人综合网| 在线不卡一区二区| 精品中文在线| www.久久久精品| 国产成人综合精品| 91精品在线观看视频| 91精品国产综合久久精品app| 亚洲a一级视频| av三级在线观看| 视频一区日韩| 影音先锋一区二区资源站| 日韩免费久久| 中文字幕久精品免费视频| 拍真实国产伦偷精品| 国产一级网站视频在线| 国产在线第一页| 国产一级粉嫩xxxx| 国产欧美日韩视频在线| 日本亚洲欧美| 精品区一区二区| 亚洲一级在线| 美国av一区二区| 国产第一页在线播放| 国产欧美日韩亚洲| 成人a在线视频免费观看| 午夜精品免费视频| 91亚洲国产高清| 国产成人精品免费网站| 国产真实乱子伦精品视频| 国内不卡的二区三区中文字幕| 亚洲第一视频| 国产欧美日韩久久| 欧美日韩国产一区中文午夜 | 中文字幕第一页在线播放| 免费视频最近日韩| 欧美日韩午夜在线| 国产字幕在线看| 国产欧美日韩视频| 日韩欧美国产免费播放| 中文字幕在线观看欧美| av免费在线观看网址| 久久久99精品久久| 日韩av一区二区在线观看| 日韩精品在线观看视频| 欧美高清视频一区二区三区| 国产h片在线观看| 国产一区深夜福利| 日韩亚洲国产欧美| 视频一区二区不卡| 人人做人人澡人人爽欧美| 国产一区激情在线| 国产91久久久久| 午夜伦欧美伦电影理论片| 欧美在线日韩在线| www.中文字幕在线| 久久永久免费视频| 中文字幕欧美亚洲| 极品久久久久久| 亚洲一区日韩精品中文字幕| 欧美日韩在线视频免费观看 | 日韩字幕在线观看| 91吃瓜在线观看| 一区二区三区精品在线| 欧美色欧美亚洲高清在线视频| 国产乱国产乱300精品| 日韩中文字幕视频在线| 中文字幕日韩视频| 免费在线观看国产黄| 欧美亚洲综合视频| 99视频在线看| 久久久久久91| 中文字幕欧美亚洲| 免费高清在线一区| 中文字幕在线视频第一页| 国产乱国产乱300精品| 欧美日韩亚洲不卡| 精品亚洲永久免费| 国产一区高清视频| 日韩中文字幕在线播放| 国产一二三区精品视频| 日韩免费视频一区二区视频在线观看 | www.久久草| 久久夜色精品国产噜噜亚洲av| 另类专区欧美| 91精品网站| 亚洲a中文字幕| 91精品视频播放| 91精品国产91久久久久久久久| 亚洲综合在线电影| 精品一二三四区| 成人一区二区不卡免费| 欧美一级免费在线观看| 久久精品一二三| 日韩精品中文字幕第1页| 午夜精品一区二区三区免费视频| 伊人亚洲视频| 日韩精品三级| 一区二区三区鲁丝不卡| 国产黄在线观看| 国产视频二区| 最新日韩中文字幕| 正在播放日韩精品| 国产黄在线观看| 亚洲制服丝袜一区| 在线视频不卡国产V| 欧美日韩国产一中文字不卡| 国产日韩中文字幕在线| 最近中文字幕在线中文视频| 日韩欧美三级视频| 国产欧美日韩在线播放| 日韩一级在线视频| 最近中文字幕日韩精品| 中文字幕2020第一页| 国产欧美日产一区| 日韩激情一区| 九七久久人人| 在线日韩中文| 成年人看的羞羞网站| 国产无遮挡在线视频免费观看| 欧美国产91| 亚洲一级影院| 婷婷精品视频| 日韩三级精品电影久久久| 一级特黄aaa大片在线观看| 精品在线网站观看| 日韩中文字幕| 91精品在线观看国产| 中文字幕在线播放一区| 欧美三级在线视频| 99在线精品视频免费观看20| 国产黄色在线观看| 国产欧美日韩在线播放| 一区二区在线观看不卡| 91久久精品国产| 欧美日韩午夜精品| 日韩在线一区二区视频| 欧美日韩乱国产| 色www精品视频在线观看| 日韩中文字幕亚洲| 欧美日韩亚洲天堂| 国产欧美第一页| 国产手机视频一区二区| 一级国产黄色片| 亚洲高清视频一区| 人成免费在线视频| 久久久综合精品| 黄色国产在线| 91精品国产色综合久久久蜜香臀| 日韩精品免费观看视频| 日韩视频在线观看一区| 亚洲高清视频在线| 欧美日韩精品中文字幕| 国产资源在线观看入口av| 欧美 日韩 国产 在线| 亚洲欧洲精品在线| 国产黄色小视频| 国产日韩精品在线| 亚洲第一视频| 国产成人精品999| 亚洲福利在线视频| 久久精品国产99| 国产欧美日韩综合精品| 在线三级av| 最近中文字幕第一页| 午夜国产视频 | 亚洲免费婷婷| 国产黄色高清在线| 日韩精品福利一区二区三区| 一区二区三区精品99久久| 欧美三级日韩三级国产三级| 久久视频在线免费观看| 国产一区高清视频| 天天综合色天天| 欧美中文字幕精品| 精品国自产在线观看| 日韩在线三区| 99色在线视频| 色国产在线视频| 色综合影院在线| 亚洲校园欧美国产另类| aaa大片在线观看| 中文字幕精品在线视频| 国产一级片在线| 国产日韩中文字幕| 久久久精品日韩欧美| 国产欧美日韩精品综合| 91久久精品国产91性色69| 日韩中文在线视频| 亚洲高清中文字幕| 日韩一级在线免费观看| 中文字幕 日韩 欧美| 欧美中文字幕视频| 午夜国产在线| 91精品婷婷国产综合久久竹菊| 久久69成人| 日韩字幕在线观看| 欧美久久在线观看| 精品久久久三级| 一级网站免费观看| 亚洲 欧美综合在线网络| 日韩av一区在线| 欧美一级二级三级区| 成片免费观看| 日韩一级网站| 亚洲视频在线观看日本a| 国产网站av| 欧美日韩亚洲天堂| 精品播放一区二区| 欧美亚洲免费高清在线观看| 精品日韩视频| 粉嫩粉嫩芽的虎白女18在线视频| 精品日韩99亚洲| 中文字幕亚洲国产| 亚洲第一视频| 91精品国产调教在线观看| 精品乱人伦一区二区三区| www在线播放| 92久久精品| 欧美日韩在线视频免费观看| 国产高清精品在线| 国产中文在线| 一级日本免费的| 中文字幕2020第一页| 国产区高清在线| 中文字幕日韩在线观看| 亚洲综合三区| 91欧美在线| 在线视频你懂得一区| 在线欧美一级视频| 国产69精品久久久久孕妇国产69久久 | 天堂在线视频中文网| 亚洲黄色片在线观看| 久艹在线视频| 日韩欧美在线视频日韩欧美在线视频| 日韩中文欧美在线| 欧美日韩视频在线| 欧美日韩综合视频网址| 久久蜜桃精品| 一区二区三区在线播放欧美| 国产福利一区在线观看| 亚洲国产午夜精品| 区日韩二区欧美三区| 久久精品www| 精品人妻一区二区三区视频| 国产激情三区| 红桃视频国产一区| 日韩一二三四区| 在线观看免费国产成人软件| 国产亚洲欧美色| 亚洲最新永久观看在线| 欧美 日韩 国产在线观看| 日韩欧美国产高清| 亚洲精品中文字幕乱码三区不卡| 欧美日韩一级视频| 日本精品免费观看高清观看| 中文欧美日韩| 精品在线网站观看| 精产国产伦理一二三区| 在线欧美一级视频| 三级网站免费观看| 欧美一级在线免费| 日韩在线三区| av免费观看国产| 伊人永久在线| 日韩在线视频网| 精品播放一区二区| 91精品国产91久久| 日本不卡免费高清视频| 中文字幕在线国产| 国产黄色精品| 亚洲第一视频网站| 欧美三级日韩三级| 人人做人人澡人人爽欧美| 三级精品视频| 麻豆精品99| 中文在线第一页| 九一久久久久久| 欧美中文字幕视频在线观看| 国产资源中文字幕| 亚洲狠狠婷婷综合久久久久图片| 欧美日韩精品欧美日韩精品| 国产一级片在线| 国产成人日日夜夜| 国产在线黄色| 精品国产99| 欧美日韩精品免费看| 欧美在线日韩精品| 综合激情国产一区| 精品999视频| 色综合天天综合网国产成人综合天| 天堂在线视频中文网| 日韩精品资源二区在线| 日韩中文字幕二区| 国产高清一级片| 一区在线视频观看| av免费网站在线观看| 亚洲伊人婷婷| 欧美不卡123| 欧美日韩中文另类| 精品久久久久久综合日本欧美| 欧美 日韩 综合| av最新网址| 香蕉av一区| 在线欧美一级视频| 欧美日韩中文另类| 一级片免费在线播放| 午夜一区二区三区免费| 欧美国产综合在线V| 国产黄色在线| 久久精品人妻一区二区三区| 国产在线看一区| 中文字幕在线国产| 精品一二线国产| 久久69成人| 欧美中文字幕在线| 欧美一卡2卡3卡4卡| 午夜成人鲁丝片午夜精品| 国产乱码在线观看| 欧美大片在线观看一区| 日韩精品手机在线| 91精品久久久久久久91蜜桃| 97久久精品| 丰满少妇一区| 亚洲福利视频专区| 国产一区日韩| 午夜国产在线视频| 欧美变态tickling挠脚心| 国产欧美日韩最新| 欧美日韩在线视频免费观看| 免费日韩精品中文字幕视频在线| 日韩精品福利视频|