国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

8 種常見的SQL錯誤用法(建議收藏)

共 5948字,需瀏覽 12分鐘

 ·

2020-12-08 06:35

點擊上方[全棧開發(fā)者社區(qū)]右上角[...][設為星標?]

前言

MySQL在2016年仍然保持強勁的數(shù)據(jù)庫流行度增長趨勢。越來越多的客戶將自己的應用建立在MySQL數(shù)據(jù)庫之上,甚至是從Oracle遷移到MySQL上來。但也存在部分客戶在使用MySQL數(shù)據(jù)庫的過程中遇到一些比如響應時間慢,CPU打滿等情況。阿里云RDS專家服務團隊幫助云上客戶解決過很多緊急問題?,F(xiàn)將《ApsaraDB專家診斷報告》中出現(xiàn)的部分常見SQL問題總結(jié)如下,供大家參考。

常見SQL錯誤用法

1. LIMIT 語句

分頁查詢是最常用的場景之一,但也通常也是最容易出問題的地方。比如對于下面簡單的語句,一般DBA想到的辦法是在type, name, create_time字段上加組合索引。這樣條件排序都能有效的利用到索引,性能迅速提升。

SELECT?*?
FROM???operation?
WHERE??type?=?'SQLStats'?
???????AND?name?=?'SlowLog'?
ORDER??BY?create_time?
LIMIT??1000,?10;?

好吧,可能90%以上的DBA解決該問題就到此為止。但當 LIMIT 子句變成 “LIMIT 1000000,10” 時,程序員仍然會抱怨:我只取10條記錄為什么還是慢?

要知道數(shù)據(jù)庫也并不知道第1000000條記錄從什么地方開始,即使有索引也需要從頭計算一次。出現(xiàn)這種性能問題,多數(shù)情形下是程序員偷懶了。在前端數(shù)據(jù)瀏覽翻頁,或者大數(shù)據(jù)分批導出等場景下,是可以將上一頁的最大值當成參數(shù)作為查詢條件的。SQL重新設計如下:

SELECT???*?
FROM?????operation?
WHERE????type?=?'SQLStats'?
AND??????name?=?'SlowLog'?
AND??????create_time?>?'2017-03-16?14:00:00'?
ORDER?BY?create_time?limit?10;

在新設計下查詢時間基本固定,不會隨著數(shù)據(jù)量的增長而發(fā)生變化。

2. 隱式轉(zhuǎn)換

SQL語句中查詢變量和字段定義類型不匹配是另一個常見的錯誤。比如下面的語句:

mysql>?explain?extended?SELECT?*?
?????>?FROM???my_balance?b?
?????>?WHERE??b.bpn?=?14000000123?
?????>???????AND?b.isverified?IS?NULL?;
mysql>?show?warnings;
|?Warning?|?1739?|?Cannot?use?ref?access?on?index?'bpn'?due?to?type?or?collation?conversion?on?field?'bpn'

其中字段bpn的定義為varchar(20),MySQL的策略是將字符串轉(zhuǎn)換為數(shù)字之后再比較。函數(shù)作用于表字段,索引失效。

上述情況可能是應用程序框架自動填入的參數(shù),而不是程序員的原意?,F(xiàn)在應用框架很多很繁雜,使用方便的同時也小心它可能給自己挖坑。

3. 關聯(lián)更新、刪除

雖然MySQL5.6引入了物化特性,但需要特別注意它目前僅僅針對查詢語句的優(yōu)化。對于更新或刪除需要手工重寫成JOIN。

比如下面UPDATE語句,MySQL實際執(zhí)行的是循環(huán)/嵌套子查詢(DEPENDENT SUBQUERY),其執(zhí)行時間可想而知。

UPDATE?operation?o?
SET????status?=?'applying'?
WHERE??o.id?IN?(SELECT?id?
????????????????FROM???(SELECT?o.id,?
???????????????????????????????o.status?
????????????????????????FROM???operation?o?
????????????????????????WHERE??o.group?=?123?
???????????????????????????????AND?o.status?NOT?IN?(?'done'?)?
????????????????????????ORDER??BY?o.parent,?
??????????????????????????????????o.id?
????????????????????????LIMIT??1)?t);?

執(zhí)行計劃:

+----+--------------------+-------+-------+---------------+---------+---------+-------+------+-----------------------------------------------------+
|?id?|?select_type????????|?table?|?type??|?possible_keys?|?key?????|?key_len?|?ref???|?rows?|?Extra???????????????????????????????????????????????|
+----+--------------------+-------+-------+---------------+---------+---------+-------+------+-----------------------------------------------------+
|?1??|?PRIMARY????????????|?o?????|?index?|???????????????|?PRIMARY?|?8???????|???????|?24???|?Using?where;?Using?temporary????????????????????????|
|?2??|?DEPENDENT?SUBQUERY?|???????|???????|???????????????|?????????|?????????|???????|??????|?Impossible?WHERE?noticed?after?reading?const?tables?|
|?3??|?DERIVED????????????|?o?????|?ref???|?idx_2,idx_5???|?idx_5???|?8???????|?const?|?1????|?Using?where;?Using?filesort?????????????????????????|
+----+--------------------+-------+-------+---------------+---------+---------+-------+------+-----------------------------------------------------+

重寫為JOIN之后,子查詢的選擇模式從DEPENDENT SUBQUERY變成DERIVED,執(zhí)行速度大大加快,從7秒降低到2毫秒。

UPDATE?operation?o?
???????JOIN??(SELECT?o.id,?
????????????????????????????o.status?
?????????????????????FROM???operation?o?
?????????????????????WHERE??o.group?=?123?
????????????????????????????AND?o.status?NOT?IN?(?'done'?)?
?????????????????????ORDER??BY?o.parent,?
???????????????????????????????o.id?
?????????????????????LIMIT??1)?t
?????????ON?o.id?=?t.id?
SET????status?=?'applying'?

執(zhí)行計劃簡化為:

+----+-------------+-------+------+---------------+-------+---------+-------+------+-----------------------------------------------------+
|?id?|?select_type?|?table?|?type?|?possible_keys?|?key???|?key_len?|?ref???|?rows?|?Extra???????????????????????????????????????????????|
+----+-------------+-------+------+---------------+-------+---------+-------+------+-----------------------------------------------------+
|?1??|?PRIMARY?????|???????|??????|???????????????|???????|?????????|???????|??????|?Impossible?WHERE?noticed?after?reading?const?tables?|
|?2??|?DERIVED?????|?o?????|?ref??|?idx_2,idx_5???|?idx_5?|?8???????|?const?|?1????|?Using?where;?Using?filesort?????????????????????????|
+----+-------------+-------+------+---------------+-------+---------+-------+------+-----------------------------------------------------+

4. 混合排序

MySQL不能利用索引進行混合排序。但在某些場景,還是有機會使用特殊方法提升性能的。

SELECT?*?
FROM???my_order?o?
???????INNER?JOIN?my_appraise?a?ON?a.orderid?=?o.id?
ORDER??BY?a.is_reply?ASC,?
??????????a.appraise_time?DESC?
LIMIT??0,?20?

執(zhí)行計劃顯示為全表掃描:

+----+-------------+-------+--------+-------------+---------+---------+---------------+---------+-+
|?id?|?select_type?|?table?|?type???|?possible_keys?????|?key?????|?key_len?|?ref??????|?rows????|?Extra????
+----+-------------+-------+--------+-------------+---------+---------+---------------+---------+-+
|??1?|?SIMPLE??????|?a?????|?ALL????|?idx_orderid?|?NULL????|?NULL????|?NULL????|?1967647?|?Using?filesort?|
|??1?|?SIMPLE??????|?o?????|?eq_ref?|?PRIMARY?????|?PRIMARY?|?122?????|?a.orderid?|???????1?|?NULL???????????|
+----+-------------+-------+--------+---------+---------+---------+-----------------+---------+-+

由于is_reply只有0和1兩種狀態(tài),我們按照下面的方法重寫后,執(zhí)行時間從1.58秒降低到2毫秒。

SELECT?*?
FROM???((SELECT?*
?????????FROM???my_order?o?
????????????????INNER?JOIN?my_appraise?a?
????????????????????????ON?a.orderid?=?o.id?
???????????????????????????AND?is_reply?=?0?
?????????ORDER??BY?appraise_time?DESC?
?????????LIMIT??0,?20)?
????????UNION?ALL?
????????(SELECT?*
?????????FROM???my_order?o?
????????????????INNER?JOIN?my_appraise?a?
????????????????????????ON?a.orderid?=?o.id?
???????????????????????????AND?is_reply?=?1?
?????????ORDER??BY?appraise_time?DESC?
?????????LIMIT??0,?20))?t?
ORDER??BY??is_reply?ASC,?
??????????appraisetime?DESC?
LIMIT??20;?

5. EXISTS語句

MySQL對待EXISTS子句時,仍然采用嵌套子查詢的執(zhí)行方式。如下面的SQL語句:

SELECT?*
FROM???my_neighbor?n?
???????LEFT?JOIN?my_neighbor_apply?sra?
??????????????ON?n.id?=?sra.neighbor_id?
?????????????????AND?sra.user_id?=?'xxx'?
WHERE??n.topic_status?4?
???????AND?EXISTS(SELECT?1?
??????????????????FROM???message_info?m?
??????????????????WHERE??n.id?=?m.neighbor_id?
?????????????????????????AND?m.inuser?=?'xxx')?
???????AND?n.topic_type?<>?5?

執(zhí)行計劃為:

+----+--------------------+-------+------+-----+------------------------------------------+---------+-------+---------+?-----+
|?id?|?select_type????????|?table?|?type?|?possible_keys?????|?key???|?key_len?|?ref???|?rows????|?Extra???|
+----+--------------------+-------+------+?-----+------------------------------------------+---------+-------+---------+?-----+
|??1?|?PRIMARY????????????|?n?????|?ALL??|??|?NULL?????|?NULL????|?NULL??|?1086041?|?Using?where???????????????????|
|??1?|?PRIMARY????????????|?sra???|?ref??|??|?idx_user_id?|?123?????|?const?|???????1?|?Using?where??????????|
|??2?|?DEPENDENT?SUBQUERY?|?m?????|?ref??|??|?idx_message_info???|?122?????|?const?|???????1?|?Using?index?condition;?Using?where?|
+----+--------------------+-------+------+?-----+------------------------------------------+---------+-------+---------+?-----+

去掉exists更改為join,能夠避免嵌套子查詢,將執(zhí)行時間從1.93秒降低為1毫秒。

SELECT?*
FROM???my_neighbor?n?
???????INNER?JOIN?message_info?m?
???????????????ON?n.id?=?m.neighbor_id?
??????????????????AND?m.inuser?=?'xxx'?
???????LEFT?JOIN?my_neighbor_apply?sra?
??????????????ON?n.id?=?sra.neighbor_id?
?????????????????AND?sra.user_id?=?'xxx'?
WHERE??n.topic_status?4?
???????AND?n.topic_type?<>?5?

新的執(zhí)行計劃:

+----+-------------+-------+--------+?-----+------------------------------------------+---------+?-----+------+?-----+
|?id?|?select_type?|?table?|?type???|?possible_keys?????|?key???????|?key_len?|?ref???|?rows?|?Extra?????????????????|
+----+-------------+-------+--------+?-----+------------------------------------------+---------+?-----+------+?-----+
|??1?|?SIMPLE??????|?m?????|?ref????|?|?idx_message_info???|?122?????|?const????|????1?|?Using?index?condition?|
|??1?|?SIMPLE??????|?n?????|?eq_ref?|?|?PRIMARY???|?122?????|?ighbor_id?|????1?|?Using?where??????|
|??1?|?SIMPLE??????|?sra???|?ref????|?|?idx_user_id?|?123?????|?const?????|????1?|?Using?where???????????|
+----+-------------+-------+--------+?-----+------------------------------------------+---------+?-----+------+?-----+

6. 條件下推

外部查詢條件不能夠下推到復雜的視圖或子查詢的情況有:

  1. 聚合子查詢;
  2. 含有LIMIT的子查詢;
  3. UNION 或UNION ALL子查詢;
  4. 輸出字段中的子查詢;

如下面的語句,從執(zhí)行計劃可以看出其條件作用于聚合子查詢之后:

SELECT?*?
FROM???(SELECT?target,?
???????????????Count(*)?
????????FROM???operation?
????????GROUP??BY?target)?t?
WHERE??target?=?'rm-xxxx'?
+----+-------------+------------+-------+---------------+-------------+---------+-------+------+-------------+
|?id?|?select_type?|?table??????|?type??|?possible_keys?|?key?????????|?key_len?|?ref???|?rows?|?Extra???????|
+----+-------------+------------+-------+---------------+-------------+---------+-------+------+-------------+
|??1?|?PRIMARY?????|??|?ref???|????|??|?514?????|?const?|????2?|?Using?where?|
|??2?|?DERIVED?????|?operation??|?index?|?idx_4?????????|?idx_4???????|?519?????|?NULL??|???20?|?Using?index?|
+----+-------------+------------+-------+---------------+-------------+---------+-------+------+-------------+

確定從語義上查詢條件可以直接下推后,重寫如下:

SELECT?target,?
???????Count(*)?
FROM???operation?
WHERE??target?=?'rm-xxxx'?
GROUP??BY?target

執(zhí)行計劃變?yōu)椋?/p>

+----+-------------+-----------+------+---------------+-------+---------+-------+------+--------------------+
|?id?|?select_type?|?table?|?type?|?possible_keys?|?key?|?key_len?|?ref?|?rows?|?Extra?|
+----+-------------+-----------+------+---------------+-------+---------+-------+------+--------------------+
|?1?|?SIMPLE?|?operation?|?ref?|?idx_4?|?idx_4?|?514?|?const?|?1?|?Using?where;?Using?index?|
+----+-------------+-----------+------+---------------+-------+---------+-------+------+--------------------+

關于MySQL外部條件不能下推的詳細解釋說明請參考以前文章:MySQL · 性能優(yōu)化 · 條件下推到物化表

7. 提前縮小范圍

先上初始SQL語句:

SELECT?*?
FROM???my_order?o?
???????LEFT?JOIN?my_userinfo?u?
??????????????ON?o.uid?=?u.uid
???????LEFT?JOIN?my_productinfo?p?
??????????????ON?o.pid?=?p.pid?
WHERE??(?o.display?=?0?)?
???????AND?(?o.ostaus?=?1?)?
ORDER??BY?o.selltime?DESC?
LIMIT??0,?15?

該SQL語句原意是:先做一系列的左連接,然后排序取前15條記錄。從執(zhí)行計劃也可以看出,最后一步估算排序記錄數(shù)為90萬,時間消耗為12秒。

+----+-------------+-------+--------+---------------+---------+---------+-----------------+--------+----------------------------------------------------+
|?id?|?select_type?|?table?|?type???|?possible_keys?|?key?????|?key_len?|?ref?????????????|?rows???|?Extra??????????????????????????????????????????????|
+----+-------------+-------+--------+---------------+---------+---------+-----------------+--------+----------------------------------------------------+
|??1?|?SIMPLE??????|?o?????|?ALL????|?NULL??????????|?NULL????|?NULL????|?NULL????????????|?909119?|?Using?where;?Using?temporary;?Using?filesort???????|
|??1?|?SIMPLE??????|?u?????|?eq_ref?|?PRIMARY???????|?PRIMARY?|?4???????|?o.uid?|??????1?|?NULL???????????????????????????????????????????????|
|??1?|?SIMPLE??????|?p?????|?ALL????|?PRIMARY???????|?NULL????|?NULL????|?NULL????????????|??????6?|?Using?where;?Using?join?buffer?(Block?Nested?Loop)?|
+----+-------------+-------+--------+---------------+---------+---------+-----------------+--------+----------------------------------------------------+

由于最后WHERE條件以及排序均針對最左主表,因此可以先對my_order排序提前縮小數(shù)據(jù)量再做左連接。SQL重寫后如下,執(zhí)行時間縮小為1毫秒左右。

SELECT?*?
FROM?(
SELECT?*?
FROM???my_order?o?
WHERE??(?o.display?=?0?)?
???????AND?(?o.ostaus?=?1?)?
ORDER??BY?o.selltime?DESC?
LIMIT??0,?15
)?o?
?????LEFT?JOIN?my_userinfo?u?
??????????????ON?o.uid?=?u.uid?
?????LEFT?JOIN?my_productinfo?p?
??????????????ON?o.pid?=?p.pid?
ORDER?BY??o.selltime?DESC
limit?0,?15

再檢查執(zhí)行計劃:子查詢物化后(select_type=DERIVED)參與JOIN。雖然估算行掃描仍然為90萬,但是利用了索引以及LIMIT 子句后,實際執(zhí)行時間變得很小。

+----+-------------+------------+--------+---------------+---------+---------+-------+--------+----------------------------------------------------+
|?id?|?select_type?|?table??????|?type???|?possible_keys?|?key?????|?key_len?|?ref???|?rows???|?Extra??????????????????????????????????????????????|
+----+-------------+------------+--------+---------------+---------+---------+-------+--------+----------------------------------------------------+
|??1?|?PRIMARY?????|??|?ALL????|?NULL??????????|?NULL????|?NULL????|?NULL??|?????15?|?Using?temporary;?Using?filesort????????????????????|
|??1?|?PRIMARY?????|?u??????????|?eq_ref?|?PRIMARY???????|?PRIMARY?|?4???????|?o.uid?|??????1?|?NULL???????????????????????????????????????????????|
|??1?|?PRIMARY?????|?p??????????|?ALL????|?PRIMARY???????|?NULL????|?NULL????|?NULL??|??????6?|?Using?where;?Using?join?buffer?(Block?Nested?Loop)?|
|??2?|?DERIVED?????|?o??????????|?index??|?NULL??????????|?idx_1???|?5???????|?NULL??|?909112?|?Using?where????????????????????????????????????????|
+----+-------------+------------+--------+---------------+---------+---------+-------+--------+----------------------------------------------------+

8. 中間結(jié)果集下推

再來看下面這個已經(jīng)初步優(yōu)化過的例子(左連接中的主表優(yōu)先作用查詢條件):

SELECT????a.*,?
??????????c.allocated?
FROM??????(?
??????????????SELECT???resourceid?
??????????????FROM?????my_distribute?d?
???????????????????WHERE????isdelete?=?0?
???????????????????AND??????cusmanagercode?=?'1234567'?
???????????????????ORDER?BY?salecode?limit?20)?a?
LEFT?JOIN?
??????????(?
??????????????SELECT???resourcesid,?sum(ifnull(allocation,?0)?*?12345)?allocated?
??????????????FROM?????my_resources?
???????????????????GROUP?BY?resourcesid)?c?
ON????????a.resourceid?=?c.resourcesid

那么該語句還存在其它問題嗎?不難看出子查詢 c 是全表聚合查詢,在表數(shù)量特別大的情況下會導致整個語句的性能下降。

其實對于子查詢 c,左連接最后結(jié)果集只關心能和主表resourceid能匹配的數(shù)據(jù)。因此我們可以重寫語句如下,執(zhí)行時間從原來的2秒下降到2毫秒。

SELECT????a.*,?
??????????c.allocated?
FROM??????(?
???????????????????SELECT???resourceid?
???????????????????FROM?????my_distribute?d?
???????????????????WHERE????isdelete?=?0?
???????????????????AND??????cusmanagercode?=?'1234567'?
???????????????????ORDER?BY?salecode?limit?20)?a?
LEFT?JOIN?
??????????(?
???????????????????SELECT???resourcesid,?sum(ifnull(allocation,?0)?*?12345)?allocated?
???????????????????FROM?????my_resources?r,?
????????????????????????????(?
?????????????????????????????????????SELECT???resourceid?
?????????????????????????????????????FROM?????my_distribute?d?
?????????????????????????????????????WHERE????isdelete?=?0?
?????????????????????????????????????AND??????cusmanagercode?=?'1234567'?
?????????????????????????????????????ORDER?BY?salecode?limit?20)?a?
???????????????????WHERE????r.resourcesid?=?a.resourcesid?
???????????????????GROUP?BY?resourcesid)?c?
ON????????a.resourceid?=?c.resourcesid

但是子查詢 a 在我們的SQL語句中出現(xiàn)了多次。這種寫法不僅存在額外的開銷,還使得整個語句顯的繁雜。使用WITH語句再次重寫:

WITH?a?AS?
(?
?????????SELECT???resourceid?
?????????FROM?????my_distribute?d?
?????????WHERE????isdelete?=?0?
?????????AND??????cusmanagercode?=?'1234567'?
?????????ORDER?BY?salecode?limit?20)
SELECT????a.*,?
??????????c.allocated?
FROM??????a?
LEFT?JOIN?
??????????(?
???????????????????SELECT???resourcesid,?sum(ifnull(allocation,?0)?*?12345)?allocated?
???????????????????FROM?????my_resources?r,?
????????????????????????????a?
???????????????????WHERE????r.resourcesid?=?a.resourcesid?
???????????????????GROUP?BY?resourcesid)?c?
ON????????a.resourceid?=?c.resourcesid

AliSQL即將推出WITH語法,敬請期待。

總結(jié)

  1. 數(shù)據(jù)庫編譯器產(chǎn)生執(zhí)行計劃,決定著SQL的實際執(zhí)行方式。但是編譯器只是盡力服務,所有數(shù)據(jù)庫的編譯器都不是盡善盡美的。上述提到的多數(shù)場景,在其它數(shù)據(jù)庫中也存在性能問題。了解數(shù)據(jù)庫編譯器的特性,才能避規(guī)其短處,寫出高性能的SQL語句。
  2. 程序員在設計數(shù)據(jù)模型以及編寫SQL語句時,要把算法的思想或意識帶進來。
  3. 編寫復雜SQL語句要養(yǎng)成使用WITH語句的習慣。簡潔且思路清晰的SQL語句也能減小數(shù)據(jù)庫的負擔 ^^。
  4. 使用云上數(shù)據(jù)庫遇到難點(不局限于SQL問題),隨時尋求阿里云原廠專家服務的幫助。

作者 |?db匠

來源 |?http://yq.aliyun.com/articles/72501

覺得本文對你有幫助?請分享給更多人

關注「全棧開發(fā)者社區(qū)」加星標,提升全棧技能


本公眾號會不定期給大家發(fā)福利,包括送書、學習資源等,敬請期待吧!

如果感覺推送內(nèi)容不錯,不妨右下角點個在看轉(zhuǎn)發(fā)朋友圈或收藏,感謝支持。


好文章,留言、點贊、在看和分享一條龍吧??

瀏覽 23
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 2025中文在线观看最好看的电影 | 9797色色| 中文字幕牛牛婷婷| 51成人精品午夜福利| 国产V精品| 中文字幕91| 天天艹夜夜艹| 台湾一区二区| 午夜福利小视频| 青青草娱乐视频| 探花在线| 亚洲影音先锋资源| 中文字幕人妻精品一区| 久久久天堂国产精品女人| 欧美三P囗交做爰XXXⅩ| 日本親子亂子倫XXXX50路| 黄色成人网址| 欧美成人无码一区二区三区| 国产乱叫456在线| 99性爱网| 国产三级片网| 99精品六月婷婷综合在线| 日韩一级黄色视频| 国产粉嫩| 国产VA| 亚洲欧美日本在线观看| 91丨露脸丨熟女抽搐| 色哟哟在线观看| 91大神网址| 亚洲无码十八禁| 一級免費网站| 欧美成人精品a| 久久精品在线| 伊人一区| 欧美亚韩一区二区三区| 2014天堂网| 91干| 无码av中文字幕| 69国产精品成人无码视频色| 黄A网站| 欧美熟妇一区二区| 蜜桃Av噜噜一区二区三区四区| 特级西西444www大胆高清图片 | 亚洲激情无码视频| 免费无码在线视频| 国产精品久久久久久婷婷天堂 | 日本成人毛片| 九九综合网| 一级少女免费播放电视剧韩剧TV| 国产成人秘在线观看免费网站| 围内精品久久久久久久久白丝制服| 黄频在线免费观看| 夜夜网站| 久久久婷婷五月亚洲国产精品| 国产女人操逼视频| 激情AV在线观看| 日韩在线免费视频| 伊人成人在线视频| 欧美视频在线观看| 青春草在线视频| 四虎在线观看| 色婷婷综合在线| 高h视频在线观看| 五月激情综合| 免费高清无码在线观看| 中文字幕在线不卡| 无码AV在线观看| 亚洲三级视频在线观看| 中文字幕一区二区三区免费2023 | 狼友免费视频| 骚BBBB槡BBB槡BBB| 欧美一区二区三区成人| 99视频自拍| 人人色网站| 一级片麻豆| 国精品无码一区二区三区在线| 中文字幕亚洲中文字幕| 中文字幕www一区| 久久福利网| 国产高清精品无码| 一本色道久久88综合无码| 国产免费操逼| 国产伦子伦一级A片免费看老牛| 国产a一级a毛一级视频| 天天日天天操天天日| 日本不卡在线观看| 久了中文字幕| 午夜视频免费在线观看| 大香蕉久久精品| 欧美99视频| av亚洲波多野结衣白嫩水多波| 国产丰满大乳无码免费播放| 丝瓜视频黄| 中文无码不卡| 久久久波多野结衣| 青青青青青操| 奇米影视77777| 人妻无码不卡| 狠狠色狠狠干| 大荫蒂hd大荫蒂视频| 中文在线a√在线8| 亚洲国产精品久久人人爱| 俄女兵一级婬片A片| 人善交精品一区二区三区| 91人妻精| 欧美日韩黄色| 日本人妻A片成人免费看片| av资源在线| 超碰在线免费| 狼人伊人综合| 国产淫乱视频| 精品视频导航| 国产人成| 少妇人妻av| 成人高清无码在线| 视频一区二区三| 亚洲自拍网站| 亚洲乱伦中文字幕| 91女人18毛片水多的意思 | 2014亚洲天堂| 蜜桃视频欧美| 日本欧美中文字幕| www.xxx国产| 秘亚洲国产精品成人网站| 黄色一级视频网站| 蜜桃av一区二区三区| 欧美日韩精品一区二区| 人人妻人人澡人人爽人人DVD| 亚洲成人高清无码| 亚洲视频一区| 91色视频在线观看| 欧美日韩V| 少妇一级婬片内射视频| 99热日本| 麻豆md0049免费| 黄片大全免费看| 欧美毛片A| 日韩人妻无码一区二区三区99| 中文字幕欧美日韩| 天天日天天干麻豆| 黄片视频在线免费播放| 久久久国产精品在线| 无码视频久久| 亚洲日韩免费视频| 影音先锋日韩| 国产777777| 青娱乐超碰| 欧美日韩在线观看一区| 91国产精品在线视频| 色综合天| 蜜臀av在线播放| 国产黄色免费视频| 久久精品国产亚洲| 丁香六月婷婷综合| 国产精品久久久久久久免牛肉蒲 | 亚洲欧美一区二区三区在线| 夜夜操夜夜操| 大香蕉伊人9| 色综合九九| 国产成人777777精品综合 | 体内射精免费视频| 动漫人物插画动漫人物的视频软件 | 狠狠躁日日躁夜夜躁A片小说免费 色综合久久久无码中文字幕999 | 日本中文字幕在线视频| 亚洲AV无码国产精品| 免费精品黄色网页| 免看一级a一片| 国产无码观看| 欧美亚洲自拍偷拍| 国产成人A| 大香蕉伊人视频| 成人社区视频| 日本中文字幕在线免费观看| 精品永久免费| 蜜桃Av噜噜一区二区三| 人人插人人操| 亚洲性精| 欧美三级欧美一级| 蜜臀久久99精品久久久久久婷婷| 日韩a片在线观看| 第一福利视频| 外国成人视频| 亚洲欧美另类图片| 日韩AV无码成人精品| 爱爱视频h| 一区二区三区四区久久| 国产伊人久久| 久久精品福利视频| 午夜精品18视频国产17c| 簧片网站免费| 人人看人人摸人人草| 99无码| 日本无码电影| 一级a片激情啪啪免费观| 国产夫妻自拍av| 黄色视频在线免费观看网站| 亚洲精品一级二级三级| 你懂的视频在线观看| 亚洲伊人av| 天天艹天天| 上海熟妇搡BBBB搡BBBB| 九色PORNY9l原创自拍| 大香蕉伊人在线视频| 人人澡人人妻人人爽| 手机在线操B视频| 嫩BBB槡BBBB槡BBBB视频-百度 | 五月停亭六月,六月停亭的英语| 91蝌蚪视频在线观看| 五月丁香六月婷| 亚洲AAAAAA| 成人精品一区日本无码网站suv/ | www黄色视频| 西西444大胆无码视频| 欧美三级欧美三级三级| 国产熟女| 泄火熟妇2-ThePorn| 熟妇人妻久久中文字幕| 午夜偷拍视频| 日日夜夜拍| 狠狠干狠狠干| 五月天在线电影| 88在线无码精品秘入口九色| 免费在线看黄色| 老女人操逼视频| 超碰v| 日韩AV成人电影| 国产毛片一区二区三区| 翔田千里高潮90分钟| 麻豆国产91| 北条麻妃人妻中文字幕91影视| 亚洲日逼| 777偷窥盗摄00000| 国产又爽又黄免费| 中文字幕日韩在线视频| 久久99精品久久久久婷婷| 国产乱码精品一品二品| 在线播放一区| 最新中文字幕在线观看| 久久久老熟女一区二区三区91 | 精品人妻午夜| 国产成人无码一区二区在线| 激情五月天小说网| 亚洲视频www| 国产理论电影在线观看| 中文字幕观看av| xxx一区二区| 免费黄色三级片| 大香蕉久| 国产91丝袜在线播放| 日韩无码AV一区二区| 日韩无码电影网| 五月天黄色电影网站| 午夜成人福利剧场| 97超碰大香蕉| 色哟哟一区二区三区四区| 国产精品乱子伦| 中文字幕第一区| 中国熟女视频| 亚洲精选一区二区三区| 青娱乐超碰在线| JIZZJIZZ国产精品喷水| 日韩AV成人电影| 国产成人99久久亚洲综合精品| 日韩性爱视频在线播放| 大香蕉网伊人在线| 97人妻在线| 亚洲最新在线视频| 亚州天堂网| 国产a视频| 成人天天爽| 国产成人精品av| 欧美激情视频一区二区三区不卡| yw尤物在线| 国产在线拍偷自揄拍无码一区二区| 色悠悠久久| 91大神网址| 中文字幕久久人妻无码精品蜜桃| 国产日韩性爱视频| 日韩中出视频| 插菊花综合网2| 四库影库| 亚洲精品中文字幕在线观看| 亚洲无码成人电影| 色哟哟视频| 在线免费A片| 日本三级AAA三级AAAA97| 校园春色av| 国产秘久久一区二区| 2018天天操天天干| A片在线观看免费| 超碰在线| 成人在线一区二区三区| 伊人网视频在线| 亚洲av黄| 在线观看国产一区| 人妻中文字幕网| 欧美一级A片在线观看| 国产精品一二三区夜夜躁| 51嘿嘿嘿国产精品伦理| 一区二区三区无码免费| 中文无码精品欧美日韩| 亚洲人成人无码一区二区三区| 亚洲久操| 成人无码影院日韩,成人年…| 操逼在线免费观看| 亚洲日韩一区二区三区| 亚洲av毛片| 俺去操| 东北操逼视频| 97资源在线| 成人网站大香蕉| 国产女人视频| 国产乱子伦-区二区| 在线无码电影| 一本一道久久a久久精品综合| 婷婷五月天大香蕉| 国产精品无码在线观看| 日日夜夜无码| 国产欧美日韩在线观看| 欧美男女操逼视频| 亭亭五月丁香| 精品交换一区二区三区无码| 亚洲无码字幕| 败火老熟女ThePorn视频| 江苏妇搡BBB搡BBBB| 色哥网在线一区| 亚洲码成人| 99视频免费在线观看| 欧美性爱成人| 无码免费高清| 国产成人无码精免费视频| 日韩在线视频网站| 88AV在线观看| 抽插网| 99视频免费在线| 国产激情视频在线播放| 中文A片| 91精品免费| 久久久久久成人无码| 青娱乐av在线| 日韩无码视频二区| 日本特黄AA片免费视频| 国产成人精品a视频| 亚洲成人五月天| 大香蕉福利视频导航| 91色秘乱码一区二区| 欧美综合高清| 91无码秘蜜桃一区二区三区-百度| 久久草成人网| 色综合久久久无码中文字幕999| 电影豹妹香港版| 91视频在| 中文字幕在线看成人电影| 青娱乐91视频| 国产18欠欠欠一区二区| 黄色免费在线观看| 无套内射在线免费观看| 在线中文字幕AV| 欧美日韩四区| Chinese搡老女人| 欧美黄色免费| 特级黄色视频| 成人动漫一区| 天天爽| yw尤物在线| 一区二区三区四区五区在线| 国产精品久久久大香蕉| 大香蕉一区二区三区| 色黄视频在线观看| 亚洲不卡视频| 一级片学生妹| 天天撸天天干天天日| 青青青国产| 国产一毛a一毛a在线观看| www.91在线| 拍拍拍免费视频| 亚洲女人被黑人巨大进入| 欧美精品久久久久久久久| 韩国无码人妻| 午夜福利视频3000| 99视频精品| 国产女人18毛片水18精品| 亚洲啪啪网站| 污视频在线看| 伊人99在线| 欧美在线综合| 一区二区三区四区av| 成人视频免费在线观看| 久热精品在线观看视频| 四虎Av| 中文有码视频| 国产噜噜噜噜噜久久久久久久久| 一本色道久久综合熟妇| 激情另类视频| 大香蕉在线视频99| 中文在线字幕免费观| 国产麻豆精品ThePorn| 大香蕉久热| 大香蕉中文视频| 久久爱成人| 9l视频自拍九色9l视频成人| 乱轮少妇| 999一区二区三区| 激情五月丁香花| 亚洲91精品| 色黄视频在线观看| 欧美日韩午夜福利视频| 69色综合| 国产看色免费| 久久逼逼| 一级爱爱爱| 日本不卡一区二区三区四区| 婷婷久月| 日韩二三区| 91小电影| 无码av一区| 91人妻人人澡人人爽人人精品一| 久久久久免费视频| 亚洲高清超级无码在线视频观看| 激情导航| 少妇视频一区| 亚洲一区亚洲二区| 51黄片| 国产麻豆精品成人毛片| 超碰v| 亚洲最大黄色| 可以在线观看的AV| 国产精品AV片| 久久久亚洲| 青青草伊人大香蕉| 国产精品无码永久免费A片| 国产欧美一区二区三区四区| 丁香五月婷婷基地| 脓肿是什么原因引起的,该怎么治疗 | 91丨九色丨蝌蚪丨对白| 婷婷五月综合网| 成人高清无码在线| 亚洲国产剧情| 欧美黑吊大战白妞欧美大片| 无码H| 操逼视频一区| 国产精品国产| 欧美日韩一区二区三区四区 | 国产成人精品123区免费视频| 亚洲综合图色40p| 中文字幕一区二区三区四区| 日日干av| 亚洲日本中文字幕在线观看| 亚洲精品区| 欧美在线成人视频| av视屏| 黄色视频在线免费看| 色老板亚洲| 97色色网站| 欧美日本成人网站入口| 五月丁香婷中文| 翔田千里无码A片| 人人妻人人澡人人爽久久| 国产黄A片免费网站免费| 精品久久免费视频| 国产精品特级毛片| 91丨九色丨熟女老版| 精品无码视频在线观看| 2019中文字幕mv第三季歌词| 九九热只有精品| 91久久爱| 日韩欧美三级在线| 亚洲国产高清在线观看视频| 特级西西44www无码| 中文字幕超清在线观看| 国产人成视频免费观看| 国产精品久久视频| 91精品久久久久久久久久| 天天草夜夜操| 五月天激情小说| 麻豆午夜成人无码电影| 理论在线视频| 亚洲免费观看高清视频| 伊人操| 久久久精品免费视频| 九九热99视频| S28AV| 超碰精品在线| 国产亚洲中文| 熟女伦乱| 中文字幕在线观看辣文| 俄女兵一级婬片A片| 亚洲电影在线| 大香蕉电影网站| 中文字幕无码在线观看| 在线播放JUY-925被丈夫上司侵犯的第7天 | 久久亚洲国产| 少妇bbb搡bbbb搡bbbb| 蜜乳av红桃嫩久久| 亚洲天堂无码| 无码精品一区二区| 国产黄色视频网站在线观看| 乱伦播放五月天| 91麻豆精品A片国产在线观看| 激情乱伦五月天| 亚洲丁香网| 人妻综合第一页| 一区二区操逼| 91精品一区二区| 蜜芽AV在线| 永久m3u8在线观看| 日韩成人无码特集| 国产精品视频免费观看| 香蕉操逼视频| 天天摸天天干| 国产69视频在线观看| 黑人vs亚洲人在线播放| 日韩成人无码视频| 成年人免费视频网站| 色婷婷激情综合网| 色婷婷Av一区| 日本操逼在线播放| 日韩在观看线| 91视频www| 77777精品成人免费A片| 日本AA视频| 狼人综合网| 美日韩无码| 国产麻豆精品成人毛片| 大香蕉com| 四库影库| 亚洲国产熟妇综合色专区| 高h视频在线观看| 九九碰九九爱97超碰| 日本AA片视频| 免费观看黄色在线视频| 久久久久久国产免费A片| 超碰人妻在线| 成人亚洲AV日韩AV无码| 欧美三级片网| 黄片网站免费在线观看| 国产免费高清无码| 色欲国产精品欧美在线密| 白浆在线| 亚洲国产免费| 婷婷久久在线| 骚逼免费观看| 亚洲无码一区二区在线| 国产免费视频69| 91视频免费网站| 中文无码一区| 黄A网站| 日韩福利一区| 最新激情网站| 三级片在线看片AV| 91精品久久久久久久| 国产在线观看AV| 日本欧美一级| 日本黄色电影在线观看| 91无码一区二区| 欧美亚洲三级片| 黄色视频在线免费看| 超碰成人在线观看| 日本免费视频| 色综合中文字幕| 色悠悠国产| 高清不卡一区二区| 人人澡人人妻人人爽| 欧美性交一区二区| 777在线视频| 国产欧美精品| A片免费播放| 视色视频在线观看18| www.99热视频| 日韩成人性爱网站| 六月婷婷在线观看| 热热毛片| 最新一区二区| 日韩精品成人无码| 成人精品国产| 国产9熟妇视频网站| 亚洲国产成人AV| 狠狠狠狠狠狠操| 六月婷婷七月丁香| 中文字幕乱码亚洲无线码按摩| 黄片视频免费看| 激情视频网| 欧美性爱-熊猫成人网| 亚洲黄色视频免费看| 91无码人妻精品一区二区蜜桃| 岛国AV免费在线| 国产无遮挡又黄又爽又色视频软件 | 日韩精品一区在线| 性色A| 欧一美一婬一伦一区二区三区自慰国 | 欧美午夜三级| 日韩三级片无码| AV免费网址| 91蝌蚪91九色| 亚洲日逼网站| 日韩第三页| 午夜AV福利影院| 大香蕉伊人成人网| 韩国中文字幕HD久久| 18禁黄网站| 午夜aaa| 东方av在线观看| 久操中文| 一曲二曲三曲在线观看中文字| 热久久这里只有精品| 在线观看操逼视频| 在线免费观看黄色视频网站| 丝袜三级片| 蜜桃AV在线观看| 黃色毛片A片AAAA级20| 91N视频| 一本色道精品久久一区二区三区| 日韩欧美在线中文| 久久成人123| 欧美狠狠干| 国产大鸡吧| 18XXX亚洲HD护士JD| 亚洲毛片在线观看| 特黄aaaaaaaa真人毛片| 中文字幕人妻互换av久久| 亚欧洲精品在线视频免费观看| 天天插一插| 欧美一级特黄AAAAAA片| 亚洲小穴| 91久久精品无码一区| 九九九九九九精品| 成人精品免费无码毛片| 日本黄色视频大全| 91久久无码一区人妻A片蜜桃| 手机看片1024你懂的| 免费的黄色视频网站| 高清无码视频在线| 丁香五月伊人| 无码男女| 国产又粗又猛又黄又爽无遮挡| 欧美色图狠狠操| 亚洲情在线| 中文成人在线| 欧美亚洲综合在线观看| 一本色道精品久久一区二区三区| 久久久亚洲AV| 人人操人人干人人操| 日韩肏屄视频在线观看| 国产精品怡红院有限公司| 六月婷婷深爱| 91麻豆精品A片国产在线观看| 丝袜制服中文字幕无码专区| 欧美日韩免费在线播放电影在线播放电影在线播放电影免费 | 天天操人人| 天天免费视频| 欧美搡BBBB搡BBB| 香蕉国产2023| 亚洲女人在线| 深爱激情网五月天| 日韩中文字幕网站| 特级婬片A片AAA毛片AA做头| 亚洲无码一二三| 国产无套免费网站69| 黄片无码免费观看| 久久久WWW成人免费精品| 婷婷成人综合| 青青青草视频在线观看| 亚欧免费视频| 777Av| 性欧美| 一道本一区| 四虎884| 国产精品秘久久久久久99| 日韩精品一区二区三区使用方法| 欧美成人高清| 强伦轩一区二区三区四区播放方式| 一区精品| 大香蕉啪啪啪| 奇米影视色偷偷| 人妻77777| 999久久久久| 日本三级片免费| 操逼操逼操| 欧美激情一区二区A片成人牛牛| 男人的天堂视频在线| 欧美三级欧美三级三级| 青青操视频在线| 中文字幕精品一区| 可以在线观看的AV| 久久精品99久久久久久| 无码黄片免费| 午夜激情视频网站| 做爱网| 日屄视频在线观看| 东京热综合| 91熟女视频| 777免费观看成人电影视频| 精品欧美激情精品一区| www.伊人大香蕉| 无码视频一二三区| 天天撸天天日| 极品少妇av| 成人片毛片| 国产精品高潮无套内谢| 久久精品成人| 激情动态视频| 亚洲无码免费观看视频| 黄色成人视频在线观看| 蜜桔视频嫩草蜜桃| 毛片在线看片| 西西444WWW无码大胆在线观看 | 婷婷精品在线| 青青草激情视频| 色婷婷电影| 国产麻豆| 天天操天天干欧美精品| 肏逼在线观看| 乱人伦欲国语对白| 亚洲免费观看高清完| 国产成人精品久久| 亚洲不卡中文字幕| 亚洲性爱一区二区| 俄女兵一级婬片A片| 精品无码一区二区三| A片网| 欧洲三级片网站| 亚洲无码一区二区三区妃光| 亚洲精品白浆高清久久久久久| 污网站18禁| 91人妻人人爽人人澡人人爽| 俺要操| 青青草综合网| 一区二区三区成人| 激情小说亚洲图片:伦| 国产精品色婷婷| 欧美日韩无| 五月停亭六月,六月停亭的英语| 国产精品不卡在线观看| 免费看的黄色视频| 91精品人妻一区二区三区| 黄片免费网站| 大香蕉伊人成人| 99免费视频在线| www.豆花福利视频| 视色网站| 国产草逼视频| 精品91| 男人天堂中文字幕| 成人无码99| 成人69AV| 亚洲小视频在线播放| 日本黄色视频网址| 久草小视频| 伊人色女操穴综合网| 中文字幕成人av| 人人摸人人爱人人操| 无码区一区二区| 亚洲无码高清视频在线| 操B视频在线观看| 操骚逼视频| 国产乱国产乱老熟300视频| 成人免费AV| 九九天堂| 91久久婷婷国产| 人人妻人人澡人人爽人人| av干在线| 男人资源在线| 欧美视频h| 中国免费一级无码成人片| 国产三级网| 三级视频在线观看| 亚洲三级无码视频| 青青草原免费在线视频| 丁香五月婷婷啪啪| 国产在线观看AV| 插菊花综合网1| 麻豆少妇| 婷婷三级| 激情五月婷婷五月| 欧美群交在线| 国产精品久久| 99性爱网| 少妇无码在线| 伊人国产女| 天天干天天草| 久久伊人春色| 久操麻豆| 国产女人18毛片水18精品| 中文字幕免费高清在线观看| 亚洲久久久| 巨爆乳肉感一区二区三区视频| 国产亚洲无码激情| 国产精品久久久久久久久久久久久| 亚洲日韩中文无码| 欧美一区| 人人妻人人澡人人DⅤD| 国产麻豆精品成人免费视频| 亚洲欧洲成人在线| 免费看a| 午夜精品成人| 成人无码区亚洲AV久久| 99re免费视频| 国产对白在线| 北条麻妃无码一区三区| 色老板综合| 91人妻人人爽人人澡人人爽 | 国产欧美日本视频| 99热这里只有精品999| 午夜福利国产| 九九成人视频| 奶头和荫蒂添的好舒服囗交漫画| 国产精品自在线| 91在线无码精品秘入口男同| 亚洲秘无码一区二区三区,| 91视频美女模特| 国产精品v欧美精品v日韩精品| 青青草在线免费视频| 午夜三级福利| 美日韩在线观看| 台湾中文字幕网| 日本熟妇高潮BBwBBwBBw| 豆花成人社区,视频| 99日韩无码| 欧美在线一级片| 日韩大香蕉在线| 一区二区三区在线观看| 国产精品久久久久的角色| 高清中文字幕在线A片| 激情综合五月| 丁香六月婷婷| 日日操天天操| 超碰97免费在线| a视频在线免费观看| 亚洲AV无码国产精品二区| 国产传媒一区| 日韩经典无码| 高清免费无码| 精品中文字幕视频| 亚洲A在线观看| 无码国产精品一区二区免费96| 人妻三级| 日韩动态视频| 亚洲AV永久无码精品| 欧美丝袜脚交xxxxBH| 国产a片免费观看| 在线免费看黄色视频| 夜夜操夜夜操| 丁香五月伊人| 成人亚洲AV| 在线成人网站| 91AV久久| 午夜福利视频网| 成人精品三级AV在线看| 一级a片在线免费观看| 大香蕉9999| 亚洲,制服,综合,中文| S牛牛AV| 久色99| 日韩成人网址| 成人国产精品免费观看| 在线三级片视频| 青青草激情视频| 国产成人无码区免费视频| 性BBW| 丰满少妇在线观看网站| 一级毛AA片| 夜色88V精品国产亚洲| 亚洲AV电影网| 黑人干亚洲人| 欧美生活片18| av三级片在线观看| 日本一区二区网站| 国产毛片久久久久久久| 高清视频一区二区| 成人免费无码毛片| 成人精品秘免费波多野结衣| 第一福利视频导航| 插吧插吧综合网| 少妇厨房愉情理伦BD在线观看 | 免费日韩| 久久人人做| 欧美婬乱片A片AAA毛片地址| 婷婷日韩中文字幕| 伊人私人影院| 久久久久成人精品无码| 大香蕉毛片| 爆操无码| 一级一级一级做a免费一级做a | 色婷婷综合网| 制服丝袜一区| 亚洲视频成人| 欧美激情四射老司机| 多啪啪免费视频| 中文字幕无码Av在线看| 国产,亚洲91| 想要xx| 国产成人精品AV| 中文字幕永久在线视频| 亚洲视频在线免费播放| 亚洲最大三级片| 99精品视频16在线免费观看 | 五月开心婷婷| 成人尤物网站| 最近中文字幕在线中文字幕7| 尤物视频在线播放|