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

8 種常被忽視的 SQL 錯誤用法

共 28746字,需瀏覽 58分鐘

 ·

2021-06-23 20:26

點擊關注上方“SQL數(shù)據(jù)庫開發(fā)”,

設為“置頂或星標”,第一時間送達干貨
SQL專欄
SQL基礎知識第二版
SQL高級知識第二版

sql語句的執(zhí)行順序:

FROM <1>
ON <2>
JOIN <3>
WHERE <4>
GROUP BY <5>
HAVING <6>
SELECT <7>
DISTINCT <8>
ORDER BY <9>
LIMIT <10>


1、LIMIT 語句

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

SELECT * 
FROM   operation 
WHERE  type = 'SQLStats' 
       AND name = 'SlowLog' 
ORDER  BY create_time 
LIMIT  100010

好吧,可能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、隱式轉換

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 的策略是將字符串轉換為數(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  020 

執(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  020
        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  020)) 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 | <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)椋?/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 |
+----+-------------+-----------+------+---------------+-------+---------+-------+------+--------------------+



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  015 

該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  015
) 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 015

再檢查執(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、中間結果集下推

再來看下面這個已經(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,左連接最后結果集只關心能和主表 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


總結

數(shù)據(jù)庫編譯器產(chǎn)生執(zhí)行計劃,決定著SQL的實際執(zhí)行方式。但是編譯器只是盡力服務,所有數(shù)據(jù)庫的編譯器都不是盡善盡美的。

上述提到的多數(shù)場景,在其它數(shù)據(jù)庫中也存在性能問題。了解數(shù)據(jù)庫編譯器的特性,才能避規(guī)其短處,寫出高性能的SQL語句。

程序員在設計數(shù)據(jù)模型以及編寫SQL語句時,要把算法的思想或意識帶進來。

編寫復雜SQL語句要養(yǎng)成使用 WITH 語句的習慣。簡潔且思路清晰的SQL語句也能減小數(shù)據(jù)庫的負擔 。

作者:db匠

來源:yq.aliyun.com/articles/72501


最后給大家分享我寫的SQL兩件套:《SQL基礎知識第二版》《SQL高級知識第二版》的PDF電子版。里面有各個語法的解釋、大量的實例講解和批注等等,非常通俗易懂,方便大家跟著一起來實操。

有需要的可以下載學習,只需要在下面的公眾號「數(shù)據(jù)前線(非本號),后臺回復關鍵字:SQL,就行

數(shù)據(jù)前線

后臺回復關鍵字:1024,獲取一份精心整理的技術干貨
后臺回復關鍵字:進群,帶你進入高手如云的交流群。
推薦閱讀

瀏覽 33
點贊
評論
收藏
分享

手機掃一掃分享

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

手機掃一掃分享

分享
舉報

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 aaa免费| 一本色道久久综合亚洲精品久久| 看国产AA免费| 午夜视频网站| 国产精品久久精品| 日日骚中文字幕| 天堂婷婷| 日韩一级无码特黄AAA片| 婷婷五月天在线观看| 18禁网站在线播放| AV东方在线| av逼网| 夜夜骚av.一区二区三区四区| 欧美亚洲激情| 日韩色小说| 国产无码黄片| 久草在线| 国产av中文| 欧美精品在线视频| 1024香蕉视频| 少妇白洁在线观看| 色a视频| 少妇搡BBBB搡BBB搡造水多/| 精品欧美无人区乱码毛片| 国产福利在线导航| AV免费播放| 成人无码小电影| 国产视频在线播放| 狼人综合网| 免费视频99| 狠狠狠狠狠狠| 国产一区在线观看视频| 亚洲免费观看高清完整版在va线观| 佐山爱人妻无码蜜桃| 在线观看免费黄色| 影音先锋人妻限定| 久久学生妹| 国产一级在线| 日本亲子乱婬一级A片| 久热在线| 国精产品一区一区三区有限公司杨| 亚洲精品456| 西西888WWW大胆视频| 一本色道久久综合狠狠躁的推荐| 国际精品久久久| 亚洲AV偷拍| 青草成人在线视频| 男人天堂视频在线观看| 婷婷开心色四房播播免费| 久久AV电影| 东北女人操逼| 99久久网站| 搡BBBB搡BBB搡我瞎了| 久久久久一区二区三区| 日韩动态图| 欧美国产中文| 国产熟女视频| 国产日本在线观看| 人人摸人人摸| A片免费观看视频| 久久久久久97电影院电影院无码| 五月天婷婷激情网| 插入综合网| 久久精品一区二区三区蜜芽的特点| 久久久久久久三级片| 国产免费AV网站| 成人国产片| 亚洲无码制服| 97播播| 黄片一区二区| 97大香蕉在线视频| www.大吊视频| 国产真实露脸乱子伦对白高清视频| 自拍一区在线观看| 久热官网| 日韩群交视频| 天天色播| 久久精品夜色噜噜亚洲A∨ | 国产A级毛片| 国产成人黄色| 精品视频久| 大香蕉伊人影院| 亚洲高清无码中字| 国产欧美在线观看| 51国产黑料吃瓜在线入口| 少妇在线视频| 臭小子啊轻点灬太粗太长了的视频 | 青榴视频免费观看| 免费在线观看a片| 无码视频一二三区| 97超碰大香蕉| 色婷婷国产精品综合在线观看| 日本无码一区二区| 91丨牛牛丨国产| 5252a我爱haose01我愿 | 最新三级网站| 国产操逼网址| 无码天堂| 久久久久久穴| 久久久久久久9999| A亚洲天堂| av资源免费| 中文字幕免费毛片| 日韩成人电影| 一区二区成人电影| 成人免费视频网站| 五月婷婷六月丁香| 久久婷婷激情| 成人自拍视频在线| wwwxx在线观看| 欧美三级片视频| 欧美性爱小说网| 国产精品丝袜| 无码高清18| 亚洲成人少妇老妇a视频在线| 五月婷婷中文| 你懂的在线免费观看| 狠狠干大香蕉| ww亚洲ww| 老妇性BBWBBWBBWBBW| 97国产成人| 嫩BBB槡BBBB槡BBB小号| 国产精品无码怀孕软件| 久久久免费观看视频| 啪啪啪网址| 九七色色电影| 亚洲色情电影| 最新在线中文字幕| 久操网在线视频| 一级女婬片A片AAAA片| 动漫无码视频| 一起操逼| 欧美在线a| 成人亚洲A片V一区二区三区蜜月 | 中文字幕人成人乱码亚洲电影| 免费自拍视频| 男人天堂无码成人| 青青在线| 加勒比综合| 精品日韩一区二区三区| 另类BBwBBw| 国产一级性爱视频| 999精品视频| 日本久久网站| 久久这里精品| 色婷婷国产精品视频| 日韩综合不卡| 一级黄片免费看| 伊人9999| 欧美性性生交XXXXX无码| 18成人网站在线观看| 丝袜东京热AV高清| 69精品| 人善交精品一区二区三区| 人人香蕉| 天天操比| 亚洲AV无码成人H动漫| 国产性爱一级片| 日韩国产AV| 影音先锋日韩| 亚洲福利一区| 成人亚洲欧美| 中文无码AV在线| 久久久精品国产视频| 午夜毛片| 久久久999| 操逼视频无码| 亚洲无码一二区| 91人妻日韩人妻无码| 中文字幕免费毛片| 无码网站内射| 亚洲啪啪网站| 亚洲高清无码在线观看| www.91爱爱,com| 成人特级毛片| 老骚逼| 成人在线毛片| AⅤ在线观看| 国产女人十八水真多| 国产成人视频在线播放| 综合站欧美精品| 日韩AV在线免费观看| 免费小视频| 欧美黄色片在线观看| 亚洲午夜久久久久久久久红桃| 国产成人精品一区二| 国产一区二区三区免费观看| 黄色视频网站观看| 亚洲国产精品18久久久久久| 久艹AV| 国产欧美一区二区人妻喷水| 亚洲av网站| 亚洲免费观看高清| 国产777777| 重庆美女揉BBBB搡BBBB| 色婷婷视频在线播放| 岛国免费AV| 欧美操b| 免费在线黄色视频| 国产精品高潮呻吟久久| 十八女人高潮A片免费| 一级黄色性爱视频| 欧美成人手机在线看片| 人人综合网| 能看的操逼视频| 免费观看一级黄片| 国产乱子伦一区二区三区视频| 一级a爱视频| 亚洲A片免费看| 91人妻一区二区三区无不码超满 | 曰本精品综合网在线| 国产性爱精品影片免费看| 婷婷色网| 99精品在线| 青春草视频| 久久内射| 2025AV中文字幕| 一级a片激情啪啪免费观| 欧美+日产+中文| 日韩操逼图| 国产性精品| 中文字幕视频在线免费观看| 人人爱人人插高清| 欧美第一网站| 尤物看片| 天天毛片| 俺去也在线播放| 国产视频无码在线| 超碰成人在线免费观看| 日日躁夜夜躁| 日韩一级片免费观看| 精品欧美一区二区三区久久久| 熟睡侵犯の奶水授乳在线| 911精品人妻一区二区三区A片| 97精品视频在线观看| 97人妻精品一区二区三区视频| 北条麻妃无码播放| 翔田千里一区二区| 中文字幕在线观看亚洲| 人妻人人爽| 日本高清一区二区高清免费视频| 大香蕉福利视频导航| 日韩成人黄色视频| 人妻少妇精品视频一区二区三区 | 91鸡巴| 狠操网| 精品国产999久久久免费| 超碰97人人爱| 久久久久极品| 中文字幕国产精品| 7777影视电视剧在线观看官网| 大香蕉官网| 操b视频网站| 亚洲综合激情五月久久| 午夜久操| 欧美日韩一级黄片| 日本啪啪网站| 波多野结衣一区二区三区在线观看| 69成人无码| 不卡中文字幕| 大香蕉AV在线| 国产中文字幕AV| 色哟哟一区| 最新毛片网站| 微熟女导航| 欧一美一婬一伦一区二区三区黑人| 在线视频免费观看| 久热国产视频| 芳芳的骚逼| 亚洲欧美久久久久久久久久久久| 美日韩一区| 国产乱伦中文字幕| 中文字幕亚洲一区| 18禁在线播放| 欧美激情性爱网站| 色吧超碰| 精品乱伦视频| 亚洲中文网| 伊人黄片| 日本一区二区三区视频在线观看| 亚洲AV成人无码精品区| 亚洲秘无码一区二区三区蜜桃中文| 欧美大黑逼| 亚洲精品字幕| 国产精品2025| 老太婆擦BBBB撩BBBB| 美女久久| 青青草手机视频| 亚洲最新视频| 国语一区| 国产成人性爱| 成人福利| JlZZJLZZJlZZ亚洲女人17| www,久久久| 亚洲人成色777777无码| 欧美精品秘一区二区三区蜜臀| 强波多野结衣黑人| 黄色视频大全在线观看| 国产一区二区三区四区五区在线| av无码在线播放| 狠狠撸天天日| 日韩精品无码一区二区三区| 在线观看免费国产| 特黄网站| 国产搡BBB爽爽爽视频| 91精品国产一区二区三区| 国产色视频在线| 国内夫妻【20p】| 黄色大片免费网站| 一二区免费视频| 嫩BBB搡BBB搡BBB搡| 成人免费毛片果冻日本| 丁香六月婷婷综合激情欧美| 国产一级a毛一级a做免费图片 | 国产有码视频| 欧美日韩中文在线视频| 草逼视频网站| 亚洲在线视频播放| 五月天婷婷国产| 极品少妇av| 特级毛片片A片AAAAAA| 成人免费毛片视频| 亚洲色图欧美在线| 中文字幕久久人妻无码精品蜜桃| 胖老板办公室沙发无套爆秘书| 黄色成人大片| 成人动漫一区二区| 淫秽视频免费看| 天天草天天草| 国产妞干网| 91无码成人视频| 色国产在线| 中文在线观看视频| 国内自拍2025| 熟女人妻ThePorn| 欧美青青草| 超碰人人干人人操| 在线中文字幕AV| 欧美黄色小说| 亚洲第一成人网址| www.五月婷婷| 99资源站| 蜜臀精品一区二区三区| 韩国精精品视频| 撸一撸av| 五月天激情影院| 国产精品无码一区二区三| 精品一区二区三区视频| 国产免费一区二区三区| 日本中文字幕在线观看视频| 日韩精品一二三区| 一二三区| 无码日韩视频| 国内成人精品网站| 日韩欧美成人在线视频| 国产综合久久| 北条麻妃三区| 99色视频| 精品1区2区| 91久久国产综合| 久久亚洲热| 日韩小电影免费观看高清完整版在线观| 亚洲性夜夜天天天天天天| 中文不卡在线| 女人操逼视频| 中文字幕日本人妻| 日韩黄色毛片| 国产一级a毛一级a毛观看视频网站www.jn| 操B无码| 香蕉在线播放| 岛国无码在线观看| 91人人妻人人妻人人澡| 日本免费a片| 日日爱99| 人人操人人撸| 久久久久久久久久久久国产精品| 少妇搡BBBB搡BBB搡造水爽| 91久久精品一区二区三区| 日本精品在线视频| 亚洲av高清| 国产AⅤ爽aV久久久久成人| 色婷婷在线视频播放| 日韩国产中文字幕| 在线观看一级片| 欧美丰满少妇人妻精品| 亚洲精品无码更新| 亚洲高清视频在线| 五月六月丁香| 男女日逼视频| 欧美成人高清无码| 精品无码一区二区三区| 欧美成人免费A级在线观看| 韩国三级HD中文字幕2019年| 婷婷中文网| 成人免看一级a一片| 国产欧美一区二区三区视频在线观看| 国产91小视频| 男人天堂无码| 爱爱视频免费网站| 爱搞逼综合网| 天天射天天操天天干| 蜜臀AV一区二区三区免费看| 一道本一区二区三区| 亚洲第一综合网| 欧美日韩三区| 69视频在线免费观看| 欧洲成人免费视频| 狠狠色狠狠撸| 影音先锋成人AV| 精品一区二区三区免费| 婷婷开心五月天| 欧美成人精品欧美一级私黄| 国产一区二区波多野结衣| 麻豆久久久| 熟女国产| 91麻豆精品国产91久久久久久久久 | 国产自偷自拍| 成人欧美在线观看| 国产在线观看mv免费全集电视剧大全| av一级片| 中文字幕免费AV| 秋霞精品一区二区三区| 国产激情福利| 日本免费版网站nba| 日韩一级在线观看| 99在线精品视频观看| 免费黄网站| 人人草在线观看| 色av网| 黑人人妻黑人ThePorn| 日日夜夜天天综合| 中文字幕中文字幕| 国产乱子伦无码视频免费| 亚洲欧美大香蕉视频网| 午夜乱论| 51成人精品午夜福利| 国产粉嫩| 久热精品在线观看视频| 四川搡BBBBB搡BBB| 久草久| 成av人片一区二区三区久久| 国产中文字幕在线| 日韩视频――中文字幕| 欧美日韩加勒比| 激情丁香五月婷婷| 二区三区不卡| 中文国产| 翔田千里無碼破解| 大香蕉伊人视频在线观看| 黄色视频免费看| 麻豆国产一区二区三区四区| 男人天堂视频网站| 亚洲一区二区三区免费视频| 激情五月婷婷| 中文无码一区| 婷婷五月天色播| 亚洲激情精品| 一级AV| 久久一二三区| 天堂婷婷| AV大全在线免费观看| 亚洲无码二区| 操欧美老女人| 熟女少妇一区二区三区| AV成人无码| 性爱久久久| 天天色天天干天天日| 加勒比无码在线播放| 丰满熟妇高潮呻吟无码| 激情五月天小说网| 婷婷久久综合久色| 无码av免费精品一区二区三区| 竹菊传媒一区二区三区| 超碰最新在线观看| 五月丁香啪啪啪| 天天爽视频| 大香蕉国产精品视频| 草逼毛片| 成人a电影| 爱精品视频| 五月婷婷五月天| 婷婷九月| 欧美在线免费视频| 少妇厨房愉情理伦BD在线观| 中文字幕第六页| 亚洲最大视频| 不卡视频一区二区三区| 亚洲一区二区免费视频| 国产免看一级a一片成人aⅴ| 一插菊花综合网| 日韩一区二区三区在线| 亚洲V国产v欧美v久久久久久| 蜜臀久久久99久久久久久久| 在线免费观看黄色网址| 久久九九免费视频| 午夜一级性爱片| 亚洲高清在线播放| 91人人妻人人澡人人爽人人| 欧美日韩色图| 天天日人人| 91天天操| 欧美老妇大BBBBXXXX| 国产不卡网| 91在线无码精品秘国产三年| 欧美A√| 91人人妻人人澡人人爽人人| 国产日韩一区二区| 免费黄色视频网站大全| 亚洲不卡一区二区三区| 影音先锋亚洲无码| 五月天色色小说| 中文字幕操逼网站| 无码内射视频| 苍井空无码| 91网站在线看| 欧美精品福利| 色悠悠久久综合| 国产精品久久久久久久久久久久久久久久 | 人妻福利导航| aaaaaa在线观看免费高清 | a免费视频在线观看| 国产又黄又大又粗的视频| AⅤ视频在线观看| 丝袜制服中文字幕无码专区| 欧美黄片网站| 中日韩欧美一级A片免费| 狠狠撸在线视频| 亚洲综合免费观看高清完整版| 五月婷亚洲精品AV天堂| AAAAA毛片| 波多野结衣视频一区| 国产做爱视频| 日韩香蕉视频| 欧美日韩性爱网站| 日韩在线成人视频| 亚洲欧美日韩另类| A片国产| 91porn在线观看| 久久精品五月天| 精品无码蜜桃| 午夜乱伦福利| 色欲大香蕉| 91福利网址| 老师搡BBBB搡BBB| 久热免费视频在线观看| 91干干| 免费无码国产在线55| 亚洲AV无码专区在线播放中文 | 黄色一级大片在线免费看国产| 91人妻人人澡人人爽人人DVD| 91视频入口| 俺来也俺去www色情网| 日本一级片免费看| 色婷婷色婷婷| 性欧美欧美巨大69| 逼逼爱| 久久这里只有精品9| 国产无套进入免费| 亚洲色,天堂网| 人人爱天天做| 亚洲成人AV在线播放| 日韩性爱AV| 17c精品麻豆一区二区免费| 91大鸡巴| 国产福利91精品一区二区三区| 无码免费播放| 激情婷婷五月天| 成人免费毛片视频| 国产成人精品视频免费看| 日韩中文字幕永久| 一级婬片A片AAAAA毛片| 手机av网站| 可以免费观看的毛片| 韩日一区二区三区| 亚洲Av无码成人专区擼| 亚洲无码一级| 欧美a视频| 西西444WWW大胆无| 免费一级婬片AA片观看| 学生妹作爱片| 激情五月天在线视频| 色欲av网站| 99精品全国免费观看| 黄色综合网| 亚洲欧美在线播放| 大香蕉亚洲| 肏少妇女情人大骚逼直播一区二区 | 国产精品久久久久久久9999| 国产男女视频| 人妻天堂| 人人爽人人爽人人爽| 超碰欧美| 日逼网站国产| 人妻久操| 日本69视频| 色射网| 免费AV片| 乱伦五月天| 思思热精品在线| 成人18视频| 亚洲欧美不卡| 国产色五月| a国产| 在线观看高清无码中文字幕| 色综合九九| 国产成人欧美| 国产精品乱子伦视频一区二区| 久久久久综合| 日本精品二区| 色呦呦一欧美| 国产99久久久精品| 老师搡BBBB搡BBB| 亚洲电影无码| 黄色亚洲| 一本一道vs波多野结衣| 精品久久久久久亚洲| 水果派解说av| 日韩午夜剧场| 日韩欧美一区二区三区| 精品女同一区二区三区四区外站在线| 免费国产成人看片在线| 国产精品乱子伦视频一区二区| 久操国产| 亚洲国产精品一区二区三区| 亚洲AV毛片成人精品网站| 成人AV十八亚洲二区| 日韩人妻无码一区| 麻豆成人片| 日韩色情电影| 久久丁香五月| 狠狠的日| 亚洲AV片一区二区三区| 国产三级免费观看| 麻豆精品在线| 狼人伊人综合| 91麻豆精品在线| 色播AV| 九九热免费视频| 大奶一区二区| 亚洲国产另类无码| 日韩午夜福利| 中文字幕精品人妻在线| 中文字幕在线观看网| 69视频免费观看| 久草资源在线| 爽爽午国产浪潮AV性色www| 国产三级片AV| 亚洲免费视频在线播放| 噜噜色av| 日产电影一区二区三区| 99在线视频免费观看| 这里视频很精彩免费观看电视剧最新| 国产A级视频| 99er视频| 黄色电影一区二区三区| 大香蕉伊人精品| 一级免费黄片| 特一级黄A片| 日本综合色| 国产三级网站| 国内无码视频| 婷婷色在线播放| 欧美猛男的大鷄巴| 97干网| 午夜AV无码| 久久久久久久久久免费视频| 18禁污网站| 江苏妇搡BBBB搡BBBB| 日韩欧美国产一区二区| 黄色毛片一级| 性爱一区| 国产小电影在线观看| 一道本AV| 国产AV一卡| 在线中文字幕AV| 色就是色欧美| 日韩在线观看中文字幕| 国产成人精品三级麻豆| 西西444WWW无码视频软件| 成人电影无码| 男女嫩草视频| 无码人妻一区二区三区在线视频不卡 | 熟女456| 日韩精品一区二区三区在线观看免费 | 看免费黄色录像| 中文字幕无码A片久久| 久久狼友| 国产人国产视频成人免费观看…| 日本理论片一道本| 69毛片| 免费在线观看视频a| 操逼高清无码| 无码观看视频| 精品一区二区三区免费毛片| 欧美操B在线| 亚洲人成免费| 日韩精品一区二区三区四区 | 99操99| 国产精品秘久久久久久99| 大荫蒂精品另类| 亚洲中午字幕| 亚洲免费av在线| 日本免费高清视频| 欧美日韩一区二区三区视频| 午夜久久久| 伊人精品大香蕉| 亚洲电影中文字幕| 黄色网址五月天| 91在线无码精品秘国产| 中文在线最新版天堂8| 午夜网页| 久了中文字幕| 中文AV字幕| 日日夜夜天天综合| h片在线观看免费| 欧美男女操逼视频| av无码网站| 日韩国产免费| 免费在线观看黄色视频网站| 2025国产在线| 一区二区三区久久| 精品www| 国产免费成人| 久久黄色免费视频| 亚州AV在线| 999免费视频| 伊人久久大香蕉国产| 狠狠操网站| 亚洲精品一级| 日日夜夜精品| 欧美性爱一级| 一区二区精品视频| 国产精品自拍小视频| 六月婷婷在线| 欧美草逼| 免费观看高清无码| av久| 青青草在线播放| 亚洲黄色视频在线免费观看| 黄色电影A片| 中文字幕第72页| 欧美国产在线观看综合| 亚洲高清无码免费观看| 免费AV播放| 第一福利视频导航| 亚洲白浆| 久久毛久久久j| 台湾成人在线| 曰韩精品| 波多野结衣AV在线| 超碰在线观看免费| 欧美V亚洲| 日韩高清无码一区| 日韩视频中文| 西西444WWW无码大胆在线观看| 黄片网站免费看| 精产国品一区二区三区| 女神思瑞精品一区二区三区| 日韩操操操| 韩国gogogo高清在线完整版| 精品一区二区三区三区| 中文字幕在线网| 丰满人妻一区二区三区46| 大香蕉久| 国产成人精品二三区麻豆| 91人妻人人澡人人爽人人DVD| 99热在线免费观看| caopeng97| 日本爱爱片| 国产一级A片| 九九热超碰| 国产c区| 亚洲人操逼| 成人视频免费网站| 黄片视频免费播放| 婷婷男人天堂| 精品无码一区二区三区四区| 国产精品日韩无码| Av高清无码| 欧美成人片免费看| 久久性爱网| www.18av| 国产精品色哟哟| 婷婷综合网| 天天综合天天做天天综合| 中文字幕乱码无码人妻系列蜜桃| 在线99精品| 久久免费观看视频| 99精品在线观看视频| 一区二区三区在线视频观看| 亚洲无码久久飞鱼网站| 日本一级黃色大片看免费| 欧美特大黄| 狠狠色噜噜狠狠狠888| 丰满人妻一区二区三区视频在线不卡 | 日韩免费高清无码视频| 亚洲国产精品一区二区三区| 97人妻精品一区二区三区| 无码骚逼| 99久久婷婷国产综合精品| 人人操人人超碰| 刘玥91精品一区二区三区| 欧美特黄AAAAAAAAA片| 免费久草视频| 日本无码毛片| 青青青在线| 牛牛在线视频| 91露脸熟女四川熟女在线观看| 狠狠躁日日躁夜夜躁A片男男视频| 五月色婷婷综合| 开心四房播播第四婷婷| 无码一二三区| 国产毛片一区二区| 欧美一本在线| 91天天操| 亚洲成人免费在线视频| 亚洲三级在线| 操逼网站免费看| 加勒比无码在线播放| 青青草大香蕉伊人| 亚洲精品aaa| 一级做a视频| 成人免费A片| 国产精品一级片| 婷婷五月天成人电影| 亲子伦视频一区二区三区| 香蕉视频日韩| 激情麻豆| 亚洲黄色视频免费| 午夜亚洲| 日本欧美在线| 免费无码成人片在线播放| а√最新版在线中文8| 97国产资源| 欧美国产第一页| 国产人国产视频成人免费观看… | 人人操狠狠操| AV大全在线免费观看| 亚洲AAAAAA| 蜜桃一区二区中午字幕| 天堂中文字幕在线观看| 日韩特级片| 91探花视频在线观看| 青娱乐老视频| 国产v在线观看| 天天天天天天天操| 91精品视频在线免费观看| 爽爽午国产浪潮AV性色www| 男女性爱视频免费| 91操美女视频| 国产大奶一区二区| 中文字幕第6页| 一区二区三区免费看| 久久不射| 天天日天天日天天干| 亚洲一区欧美| 草久免费视频| 一本到免费视频| 先锋久久| 黄色亚洲网站| 国产在线播放av| 成人一区二区在线观看| 国产成人片在线观看| 动漫av网站| www.色中色| 米奇色色色| 粉嫩99国产精品久久久久久人妻 | 成人国产精品免费观看| 人妻japanesewoman| 搞黄免费视频视频| 亚洲丝袜不卡| 91大神在线免费看| 亚洲第一中文字幕网| 国产情趣网站| 狼友视频在在观看| 亚洲欧洲有码在线| 淫乱骚穴| 日韩亚洲中文在线| 99精品视频播放| 日逼网站国产| 2019狠狠操| 大香蕉伊人电影| 999热这里只有精品| 97免费在线视频| www.91九色| 亚洲无码人妻在线| 一本久道无码| 一级AV在线| 北条麻妃无码在线| 天天都色| 久青操| 国产精品视频你懂的| 伊人网av| 永久免费黄色视频| 黄色A级片| 午夜试看120秒体验区的特点| 欧美黑人操逼| 日日操天天操夜夜操| www.a片| 一级a免一级a做免费线看内裤的注意事项 |