1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        8 種常見 SQL 錯誤用法

        共 15358字,需瀏覽 31分鐘

         ·

        2021-07-05 03:30

        微信搜索逆鋒起筆關(guān)注后回復(fù)編程pdf
        領(lǐng)取編程大佬們所推薦的 23 種編程資料!



        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 解決該問題就到此為止。但當(dāng) LIMIT 子句變成 “LIMIT 1000000,10” 時,程序員仍然會抱怨:我只取10條記錄為什么還是慢?
        要知道數(shù)據(jù)庫也并不知道第1000000條記錄從什么地方開始,即使有索引也需要從頭計算一次。出現(xiàn)這種性能問題,多數(shù)情形下是程序員偷懶了。
        在前端數(shù)據(jù)瀏覽翻頁,或者大數(shù)據(jù)分批導(dǎo)出等場景下,是可以將上一頁的最大值當(dāng)成參數(shù)作為查詢條件的。SQL 重新設(shè)計如下:
        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è)計下查詢時間基本固定,不會隨著數(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ù)作用于表字段,索引失效。
        上述情況可能是應(yīng)用程序框架自動填入的參數(shù),而不是程序員的原意?,F(xiàn)在應(yīng)用框架很多很繁雜,使用方便的同時也小心它可能給自己挖坑。

        3、關(guān)聯(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 不能利用索引進(jìn)行混合排序。但在某些場景,還是有機會使用特殊方法提升性能的。
        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、條件下推

        外部查詢條件不能夠下推到復(fù)雜的視圖或子查詢的情況有:
        • 聚合子查詢;

        • 含有 LIMIT 的子查詢;

        • UNION 或 UNION ALL 子查詢;

        • 輸出字段中的子查詢;

        如下面的語句,從執(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 | <derived2> | ref | <auto_key0> | <auto_key0> | 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)椋?/section>
        +----+-------------+-----------+------+---------------+-------+---------+-------+------+--------------------+| 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 |+----+-------------+-----------+------+---------------+-------+---------+-------+------+--------------------+
        關(guān)于 MySQL 外部條件不能下推的詳細(xì)解釋說明請參考文章:
        http://mysql.taobao.org/monthly/2016/07/08

        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 DESClimit 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 | <derived2> | 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ù)量特別大的情況下會導(dǎo)致整個語句的性能下降。
        其實對于子查詢 c,左連接最后結(jié)果集只關(guān)心能和主表 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

        總結(jié)

        數(shù)據(jù)庫編譯器產(chǎn)生執(zhí)行計劃,決定著SQL的實際執(zhí)行方式。但是編譯器只是盡力服務(wù),所有數(shù)據(jù)庫的編譯器都不是盡善盡美的。
        上述提到的多數(shù)場景,在其它數(shù)據(jù)庫中也存在性能問題。了解數(shù)據(jù)庫編譯器的特性,才能避規(guī)其短處,寫出高性能的SQL語句。
        程序員在設(shè)計數(shù)據(jù)模型以及編寫SQL語句時,要把算法的思想或意識帶進(jìn)來。
        編寫復(fù)雜SQL語句要養(yǎng)成使用 WITH 語句的習(xí)慣。簡潔且思路清晰的SQL語句也能減小數(shù)據(jù)庫的負(fù)擔(dān) 。
        文章來源:https://yq.aliyun.com/articles/72501

        逆鋒起筆是一個專注于程序員圈子的技術(shù)平臺,你可以收獲最新技術(shù)動態(tài)最新內(nèi)測資格、BAT等大廠大佬的經(jīng)驗增長自身、學(xué)習(xí)資料、職業(yè)路線賺錢思維,微信搜索逆鋒起筆關(guān)注!




        這些年小編給你分享過的干貨

        推薦一本免費的 Go 書籍!
        快速上手 Token 登錄認(rèn)證
        Java 程序員常犯的 10 個 SQL 錯誤!
        50 年長盛不衰,SQL 為什么如此成功?
        5 個免費在線 SQL 數(shù)據(jù)庫環(huán)境,簡直太方便了!

        支持下 

        轉(zhuǎn)發(fā)在看就是最大的支持??
        瀏覽 129
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产在线观看黄色| 国产91探花| 黄色色情小说| 国产小视频在线观看| 超碰成人福利| 日韩免费无码| 欧美成人三区性价比| 久久综合伊人| 亚洲AV无码精品成人| 午夜福利视频网| 91AV一区二区| jlzzzjlzzz国产免费观看| 欧美亚洲在线观看| 熟女视频网| 91人人妻人人做人人爽| 欧美成人精品A片免费一区99 | 欧美性猛交一区二区三区| 肏屄视频在线观看| 国产XXXX| 人人艹人人摸| 青青草视频在线免费观看| 日皮视频免费看| 成人福利网| 亚洲日本视频| 中文字幕在线观看不卡| 天堂在线www| 超碰97在线免费| 伊人性爱网| 熟女中文| 亚洲精品女人久久久| 亚洲无码视频看看| 国产精品V亚洲精品V日韩精品| 色黄网站在线观看| 国产小电影在线观看| 丰满人妻一区二区三区四区不卡| 91无码精品国产AⅤ| 日韩做爱网站| 西欧超碰在线| 国产精品美女久久久| 2021国产精品视频| AV大片免费看| 五月天久久久久久久| 一区二区三区四区在线视频| 一级乱伦网站| 日本亚洲视频| 成人才看的在线视频| 午夜无码久久| 91精品国产亚洲| 8x8拨牐拨牐拨牐永久免费| 天天操人人爽| 熟女人妻人妻の视频| 在线成年人视频| 加勒比综合无码| 日韩免费看片| 99热官网| 中文字幕乱码中文乱码图片| 久草网视频| 色色综合热| 日本A在线播放| 久久99精品国产.久久久久久| 亚洲AⅤ无码一区二区波多野按摩| 无码国产精品一区二区视频| 精品av在线观看| 亚洲砖区区免费| 日韩欧美黄| 国产精品一区二区三区在线| 在线免费观看无码视频| 乱子伦国产精品www| 日韩色色网| 一区二区三区四区视频在线 | 伊人性爱网| 淫荡人妻视频| 亚洲专区在线| 牛牛影视av| 日韩一级免费毛片| 精品自拍视频| 无码av在线观看| 国产欧美熟妇另类久久久| 麻豆一区二区三区| 亚洲视频一区| 成人视频三级| 激情aaa| 五月天婷婷在线播放视频免费观看| 免费黄色小视频在线观看| 欧美老女人逼| 日本三区视频| 中文字幕免费无码| 亚洲精品国产AV婷婷| 亚洲精品免费在线观看| 青娱乐偷拍视频| 色色色色五月天| 成人做爰黄AA片免费看三区| 99精品在线免费观看| 爱搞搞就搞搞| 日逼黄片| 亚洲AV无码一区二区三竹菊| a在线观看免费| 五月天在线电影| 丁香五月伊人| 国产av综合网| 少妇A片| 国产亚洲中文| 人妻乱码| 国产一级片免费观看| 日韩无码播放| 日韩一级二级| 色色加勒比综合| 久久亚洲Aⅴ成人无码国产丝袜 | 九九韩剧网最新电视剧免费观看 | 在线观看免费视频无码| 毛片9| 台湾精品一区二区三区| 9l视频自拍九色9l视频成人| 国产精品污www在线观看| 成全在线观看高清的| 加勒比无码| 蜜桃久久99精品久久久酒店| 免费黄色成人网站| 大奶一区二区| 狼友视频免费观看| 中文字幕第27页| 日美女网站| 在线观看视频免费无码免费视频| 亚洲爱爱网| 亚洲欧美日韩国产| 九色在线视频| 国产麻豆AⅤMDMD0071| 日韩和的一区二区| 玖玖资源在线观看| 影音先锋成人AV资源| 中文字幕熟女| 北条麻妃在线观看| 精品香蕉视频| 人人摸人人草| 少妇人妻一区| 少妇性受XXXX黑人XYX性爽| 日韩欧美视频在线播放| 99久久婷婷| 无码在线免费视频| 无码三级在线观看| 操逼日爱| 亚洲欧美婷婷五月色综合| 国产免费观看AV| 午夜黄色视频在线观看| 3d动漫精品H区XXXXX区| 国产乱伦自拍| 日韩国产一区| 天堂麻豆天美| 蜜桃人妻| 国产熟睡乱子伦午夜视频_第1集 | 久操婷婷| 国产精品无码天天爽视频| 午夜av影院| 欧美成人毛片AAAAAA| 青青草99热| 色老板综合| 99色在线视频| 成人做爰100部免费网站| 欧美色婷婷| 黄色视频一区二区| 九九美女视频| 粉嫩小泬粉嫩小泬在线| 18禁黄色免费网站| 免费日逼视频| 日韩精品一区二区三区免费观看高清 | 日韩久久网站| 人妻中文在线| 国产精品久久久久毛片SUV| 招土一级黄色片| 成人黄网站免费观看| 免费黄色成人| 欧美精品日韩| 蜜桃Av噜噜一区二区| 一区二区三区精品| 亚洲女人天堂AV| 色五月激情小说| 成人无码区免费A片在线软件| 日本操逼网站| 中文字幕免费| 欧美三级不卡| 中文一线二线视频| 能看的av网站| 超碰日韩| 日本国产高清| 成人精品一区日本无码网站suv/ | 91AV视频在线| 在线观看欧美日韩| 欧美九九| 精品国产一级A片黄毛网站| 国产欧美日韩视频| 亚洲久久久久久| 在线观看国产视频| 福利黄色片:片| 欧美成人精品三级网站| 在线内射视频| 亚洲va国产va天堂va久久| 日本视频网| 香蕉福利网| 在线a | www.操操操| 四虎精品成人无码A片| 日韩三级毛片| av免费观看网站| 日韩精品成人av| 日韩性爱视频在线观看| 久久久久久久国产| jizz免费视频| 午夜性福利视频| 日韩中文在线视频| 亚洲久久久| 欧美三级在线观看视频| 69国产精品无码免费| 色婷婷一级A片AAA毛片| 国产小视频在线| 91香蕉视频在线看| 成人性爱在线视频| 影音先锋日韩资源| 麻豆天美传媒AV果冻传媒| 啊啊啊亚洲| 天天日天天日天天干| 国产精成人品| 乱子伦一区二区三区视频在线观看| 四虎在线免费视频| WWWA片| 99精品视频免费观看| 加勒比一区二区| 国产区一区| 北条麻妃无码观看| www,操逼| 91看片看婬黄大片Videos| 久久久久久久精| 中文字幕在线免费| 青青大香蕉| 在线观看视频免费无码免费视频| 亚洲理论片| 日韩无码黄色片| 亚洲人成电影网| 3344gc在线观看入口| 日韩国产欧美精品一区| 亚洲中文无码av| 四虎成人精品无码永久在线的客服| 日本三级视频| 高清人妻无码| 影音先锋女人av噜噜色| 狠狠撸狠狠干| 女公务员人妻呻吟求饶| www.五月天| 日本黄色三级视频| 日本高清视频网站| 西西4444大胆无码视频| 中文字幕一区二区6页| 综合站欧美精品| 特写毛茸茸BBwBBwBBw| 影音先锋日韩精品| 香蕉黄色三级片| 无码人妻一区二区三区蜜桃视频 | 久热久热| 玩弄大荫蒂视频| 熟妇人妻丰满久久久久久久无码| 亚洲一区av| 中文√在线天堂8| Japanese在线观看| 超碰9| av无码不卡| 少妇白洁视频| 亚洲综合伊人| xxxx色| 久草视频观看| 色色色无码| 婷婷福利导航| 国产精品久久久久久久久久久免费看 | 秋霞午夜久久| 男人的天堂视频网站| 日逼片| 国产一级网站| 中文字幕精品亚洲熟女| 婷婷爱要操| 午夜福利视频3000| 逼网站| 久久久无码人妻精品无码| 青青草日逼视频| 激情欧美| 成人天天爽| 97色色超碰| 人人色人人操| 一本一道波多野结衣潮喷视频 | 亚洲高清免费| 在线色综合| 日韩a电影| 亚洲AV无码成人网站国产网站| 亚洲永久免费精品| 亚洲黄片免费观看| 亚洲精品视频在线观看免费| 国产精品视频网站| 无码高清在线| 国产精品久久久久久久牛牛| 久久77| 日本色情视频网站| 玖玖资源站中文字幕| 五月丁香在线|