精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

GreatSQL優化技巧:手動實現謂詞下推

數據庫 其他數據庫
SQL優化的核心思想是減少I/O開銷,無論什么優化技巧都是圍繞這個主題,根據SQL具體情況演變出的形形色色的方法而已。萬變不離其宗,本案例也是如此。

導語

最近總是聽到用 AI 來優化 SQL 的言論,今天心血來潮試了一下,把表結構、統計信息、SQL語句、執行計劃都告訴AI,AI給出了一大堆的建議,它會從索引,語句改寫,參數調整各個方面給出優化策略,看似面面俱到,但是如果不懂優化理論,隨便使用其給出的優化建議,可能的結果就是,一頓操作猛如虎,一看戰績零杠五。所以本人還是老老實實的總結優化技巧吧,這些案例技巧或許某天會成為 AI 的營養餐。

SQL 案例

SQL 案例語句:(實際業務場景太復雜,截取片段來說明本文主題)

SELECT ta.*, tb.*
FROM (SELECT *
          FROM (SELECT a.contactid,
                       a.subs_number,
                       a.log_time,
                       ROW_NUMBER() OVER(PARTITION BY a.contactid, a.subs_number ORDERBY a.log_time DESC) rn,
                       a.log_id
                  FROM a
                 WHERE a.contactid IS NOT NULL
                   AND a.log_time >= '2025-05-30 00:00:00'
                   AND a.log_time <= '2025-06-02') cc
         WHERE rn = 1) ta
LEFTJOIN (SELECT b.*,
                    ROW_NUMBER() OVER(PARTITIONBY b.basesn ORDERBY b.create_time DESC) rn
               FROM b
              WHERE b.create_time IS NOT NULL) tb
    ON ta.contactid = tb.basesn
   AND tb.rn = 1

下面支撐該案例 SQL 的測試表結構,符合案例 SQL 特點的測試數據。

CREATE TABLE a(log_id bigint,CONTACTID INT,subs_number INT,log_time datetime,PRIMARY KEY (log_id),KEY idx_logtime(log_time));
   CREATE TABLE b(idbigint PRIMARY KEY,basesn INT,create_time datetime,KEY idx_basesn(basesn));
   
   delimiter //
   
   CREATE ORREPLACEPROCEDURE P1() IS
   BEGIN
     FOR I IN1 .. 10000LOOP
        INSERTINTO a(log_id,contactid,subs_number,log_time) VALUES(i,TRUNC(rand()*8000),TRUNC(rand()*9000),SYSDATE-rand()*90);
     END LOOP;
     
     FOR I IN 1 .. 1000000 LOOP
        INSERT INTO b(id,basesn,create_time) VALUES(i,TRUNC(rand()*800000),SYSDATE-rand()*90);
     END LOOP;
   END;
   //
   delimiter ;

兩表的統計信息如下:

greatsql> SHOW index FROM a;
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table | Non_unique | Key_name    | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| a     |          0 | PRIMARY     |            1 | log_id      | A         |       10000 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| a     |          1 | idx_logtime |            1 | log_time    | A         |        9990 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
2rowsinset (0.00 sec)

greatsql> SHOW index FROM b;
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table | Non_unique | Key_name   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| b     |          0 | PRIMARY    |            1 | id          | A         |      916864 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| b     |          1 | idx_basesn |            1 | basesn      | A         |      515268 |     NULL |   NULL | YES  | BTREE      |         |               | YES     | NULL       |
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
2rowsinset (0.00 sec)

語句分析

SQL有兩個派生表ta,tb,這兩表做left join 左外連接。派生表ta,作為左外連接的左表,內層表a有log_time過濾條件,該列有單列索引,查詢兩三天的數據數據量命中幾百行,查詢一個月左右的數據量命中幾千到1萬左右。派生表tb,作為左外連接的右表,內層表b全表百萬級別的數據量,條件create_time is not null過濾性不好。兩個派生表都使用了窗口函數ROW_NUMBER()

執行計劃分析

語句實際執行計劃如下:

EXPLAIN: -> Nestedloopleftjoin  (cost=22497.56rows=0) (actual time=6181.328..6182.085rows=331 loops=1)
    -> Filter: (cc.rn = 1)  (cost=1.21..35.91rows=30) (actual time=2.712..2.794rows=331 loops=1)
        -> Tablescanon cc  (cost=2.50..2.50rows=0) (actual time=2.704..2.752rows=331 loops=1)
            -> Materialize  (cost=0.00..0.00rows=0) (actual time=2.698..2.698rows=331 loops=1)
                -> Windowaggregate: row_number() OVER (PARTITIONBY a.CONTACTID,a.subs_number ORDERBY a.log_time desc )   (actual time=2.189..2.323rows=331 loops=1)
                    -> Sort: a.CONTACTID, a.subs_number, a.log_time DESC  (cost=149.21rows=331) (actual time=2.168..2.190rows=331 loops=1)
                        -> Filter: (a.CONTACTID isnotnull)  (cost=149.21rows=331) (actual time=0.156..1.847rows=331 loops=1)
                            -> Indexrangescanon a using idx_logtime over ('2025-05-30 00:00:00' <= log_time <= '2025-06-02 00:00:00'), withindex condition: ((a.log_time >= TIMESTAMP'2025-05-30 00:00:00') and (a.log_time <= TIMESTAMP'2025-06-02 00:00:00'))  (cost=149.21rows=331) (actual time=0.147..1.806rows=331 loops=1)
    -> Index lookup on tb using <auto_key0> (basesn=cc.contactid, rn=1)  (cost=0.25..766.47rows=3025) (actual time=18.668..18.668rows=1 loops=331)
        -> Materialize  (cost=0.00..0.00rows=0) (actual time=6178.570..6178.570rows=1000000 loops=1)
            -> Windowaggregate: row_number() OVER (PARTITIONBY b.basesn ORDERBY b.create_time desc )   (actual time=2153.616..3469.381rows=1000000 loops=1)
                -> Sort: b.basesn, b.create_time DESC  (cost=100382.85rows=998296) (actual time=2153.598..2733.042rows=1000000 loops=1)
                    -> Filter: (b.create_time isnotnull)  (cost=100382.85rows=998296) (actual time=0.075..900.074rows=1000000 loops=1)
                        -> Tablescanon b  (cost=100382.85rows=998296) (actual time=0.074..316.051rows=1000000 loops=1)

1rowinset (6.22 sec)

兩表ta,tb使用Nested loop方式進行連接,ta表作為外層驅動表,結果集rows為331。 tb表作為內層循環表,循環掃描331次,這些都消耗不多。

此SQL耗時多的步驟在對tb的內層表b進行排序(Sort),做窗口函數聚合計算(Window aggregate),再做物化處理(Materialize)這三個步驟了,對一百萬的數據做這些處理耗時約6s,雖然只執行一次,但對SQL性能的影響是很大的。現在問題聚焦于能不能減少做這些處理的數據量。

從b表的統計信息看,關聯字段basesn的選擇性不錯,本SQL最終結果集也只有331行,關聯字段對b表的過濾條件是很好的,當前優化器的行為表現是,因為有窗口函數聚合運算,主查詢的關聯謂詞條件無法推入到tb派生表的內部。了解了這一點,想辦法改寫語句,讓關聯字段起到過濾作用。

優化方案

這里我想到的解決方案是:對外層查詢表的列CONTACTID去重處理,關聯到tb內層查詢中,對滿足關聯條件的數據做Sort,Window aggregate,Materialize這些處理。

為什么增加這一層關聯與原語句等價呢,就當作思考題吧,可在評論區評論噢!

語句改寫參考如下:

SELECT ta.*, tb.*
FROM (SELECT *
          FROM (SELECT a.contactid,
                       a.subs_number,
                       a.log_time,
                       row_number() OVER(PARTITIONBY a.contactid, a.subs_number ORDERBY a.log_time DESC) rn,
                       a.log_id
                  FROM a
                 WHERE a.contactid ISNOTNULL
                   AND a.log_time >= '2025-05-30 00:00:00'
                   AND a.log_time <= '2025-06-02') cc
         WHERE rn = 1) ta
LEFTJOIN (SELECT b.*,
                    row_number() OVER(PARTITIONBY b.basesn ORDERBY b.create_time DESC) rn
               FROM b
               join (SELECT distinct CONTACTID
                      FROM a
                     WHERE CONTACTID ISNOTNULL
                       AND LOG_TIME >= '2025-05-30 00:00:00'
                       AND LOG_TIME <= '2025-06-02') a1
                 ON a1.CONTACTID = b.basesn
              WHERE b.create_time ISNOTNULL) tb
    ON ta.contactid = tb.basesn
   AND tb.rn = 1

改寫后的語句執行計劃如下:

EXPLAIN: -> Nestedloopleftjoin  (cost=111.18rows=0) (actual time=14.846..15.281rows=331 loops=1)
    -> Filter: (cc.rn = 1)  (cost=1.21..35.91rows=30) (actual time=2.668..2.747rows=331 loops=1)
        -> Tablescanon cc  (cost=2.50..2.50rows=0) (actual time=2.636..2.683rows=331 loops=1)
            -> Materialize  (cost=0.00..0.00rows=0) (actual time=2.630..2.630rows=331 loops=1)
                -> Windowaggregate: row_number() OVER (PARTITIONBY a.CONTACTID,a.subs_number ORDERBY a.log_time desc )   (actual time=2.214..2.356rows=331 loops=1)
                    -> Sort: a.CONTACTID, a.subs_number, a.log_time DESC  (cost=149.21rows=331) (actual time=2.173..2.198rows=331 loops=1)
                        -> Filter: (a.CONTACTID isnotnull)  (cost=149.21rows=331) (actual time=0.089..1.784rows=331 loops=1)
                            -> Indexrangescanon a using idx_logtime over ('2025-05-30 00:00:00' <= log_time <= '2025-06-02 00:00:00'), withindex condition: ((a.log_time >= TIMESTAMP'2025-05-30 00:00:00') and (a.log_time <= TIMESTAMP'2025-06-02 00:00:00'))  (cost=149.21rows=331) (actual time=0.071..1.730rows=331 loops=1)
    -> Index lookup on tb using <auto_key0> (basesn=cc.contactid, rn=1)  (cost=0.25..2.57rows=10) (actual time=0.037..0.038rows=1 loops=331)
        -> Materialize  (cost=0.00..0.00rows=0) (actual time=12.159..12.159rows=382 loops=1)
            -> Windowaggregate: row_number() OVER (PARTITIONBY b.basesn ORDERBY b.create_time desc )   (actual time=11.614..11.781rows=382 loops=1)
                -> Sort: b.basesn, b.create_time DESC  (actual time=11.608..11.636rows=382 loops=1)
                    -> Stream results  (cost=237.31rows=518) (actual time=1.673..11.394rows=382 loops=1)
                        -> Nestedloopinnerjoin  (cost=237.31rows=518) (actual time=1.670..11.247rows=382 loops=1)
                            -> Filter: (a1.CONTACTID isnotnull)  (cost=214.40..35.91rows=297) (actual time=1.430..1.545rows=321 loops=1)
                                -> Tablescanon a1  (cost=215.02..221.21rows=298) (actual time=1.429..1.502rows=321 loops=1)
                                    -> Materialize  (cost=215.00..215.00rows=298) (actual time=1.428..1.428rows=321 loops=1)
                                        -> Tablescanon <temporary>  (cost=179.02..185.21rows=298) (actual time=1.303..1.349rows=321 loops=1)
                                            -> Temporarytablewith deduplication  (cost=179.00..179.00rows=298) (actual time=1.302..1.302rows=321 loops=1)
                                                -> Filter: (a.CONTACTID isnotnull)  (cost=149.21rows=298) (actual time=0.110..1.143rows=331 loops=1)
                                                    -> Indexrangescanon a using idx_logtime over ('2025-05-30 00:00:00' <= log_time <= '2025-06-02 00:00:00'), withindex condition: ((a.log_time >= TIMESTAMP'2025-05-30 00:00:00') and (a.log_time <= TIMESTAMP'2025-06-02 00:00:00'))  (cost=149.21rows=331) (actual time=0.108..1.108rows=331 loops=1)
                            -> Filter: (b.create_time isnotnull)  (cost=0.48rows=2) (actual time=0.028..0.030rows=1 loops=321)
                                -> Index lookup on b using idx_basesn (basesn=a1.CONTACTID)  (cost=0.48rows=2) (actual time=0.027..0.029rows=1 loops=321)

1rowinset (0.03 sec)

可以看出改寫后的SQL耗時0.03s,比原來的6.2s,性能提升了約200倍。表面上SQL是比原來復雜了一點,但整體執行效率卻得到了很大的提升。

總結

SQL優化的核心思想是減少I/O開銷,無論什么優化技巧都是圍繞這個主題,根據SQL具體情況演變出的形形色色的方法而已。萬變不離其宗,本案例也是如此。

通過手動改寫SQL,實現謂詞下推,減少了內層表需要處理的數據量,從而提升了SQL性能。

當然,我們期待GreatSQL的優化器能在未來實現這一算法,自動實現謂詞下推,不用改動SQL,即可高效執行SQL。

無論哪種數據庫的優化器,都會或多或少存在一定缺陷,我們優化DBA需要做的就是,理解其缺陷,再利用現有資源,幫助其找到好的執行計劃,來提升SQL性能。

責任編輯:武曉燕 來源: GreatSQL社區
相關推薦

2024-04-01 09:48:49

GreatSQL語句NULL

2023-11-07 07:50:55

LIMIT子句下推優化

2023-10-23 09:19:47

PawSQL數據庫

2010-07-26 12:50:45

Perl性能

2020-12-17 07:52:38

JavaScript

2009-12-18 14:19:45

Ruby on Rai

2024-09-14 11:23:19

2011-03-25 13:43:54

Cacti優化

2011-07-01 16:05:22

SEO

2009-12-04 16:21:44

優化Windows 7

2011-05-25 20:53:26

SEO

2009-06-16 16:39:49

Hibernate性能

2011-03-09 10:55:33

LAMP優化技巧

2023-02-07 08:15:45

PostgreSQLIO技巧

2011-03-10 10:09:33

LAMP優化

2009-06-17 12:55:47

Linux

2009-06-16 09:37:20

Linux

2024-03-11 06:00:00

OptunaPython超參數優化

2013-04-07 09:53:24

Windows系統優化

2013-06-08 14:19:05

性能優化KVM
點贊
收藏

51CTO技術棧公眾號

你懂的视频在线播放| 一区二区三区影视| 国产真人无遮挡作爱免费视频| 日韩精品免费一区二区三区竹菊| 欧美视频在线观看免费| 亚洲自拍偷拍二区| 狠狠综合久久av一区二区| 亚洲影音一区| 久久视频在线观看免费| 国产精品一区二区人妻喷水| 三级成人在线| av不卡在线观看| 欧美巨乳在线观看| 国产精品久久无码| 伊人久久大香伊蕉在人线观看热v| 亚洲一区中文日韩| 国产自产女人91一区在线观看| 久久久久久久久久91| 国产亚洲电影| 日韩精品专区在线| 国产裸体免费无遮挡| 日本黄在线观看| 国产曰批免费观看久久久| 91精品国产高清久久久久久| 国产精品视频一区二区三| 欧美美女在线| 亚洲国产精品高清久久久| 狠狠干狠狠操视频| 欧美美女日韩| 性做久久久久久久久| 最新精品视频| 97超碰人人在线| 久久久国产精华| 国产专区一区二区| 精品国产av鲁一鲁一区| 九一久久久久久| 国产精品久久久久久久美男| 午夜毛片在线观看| 伊人久久大香线蕉综合热线| 亚洲白虎美女被爆操| 欧洲在线免费视频| 18av在线视频| 中文字幕一区二区三| 欧美激情第六页| 天天摸天天干天天操| 国产成人免费网站| 97久久夜色精品国产九色| 91亚洲欧美激情| 日本不卡一区二区| 国产精品91久久久久久| 九九热最新视频| 免费观看在线综合色| 国产精品jvid在线观看蜜臀| 精品久久久久久久久久久国产字幕| 国产精品乱看| 9.1国产丝袜在线观看 | 亚洲国产人成综合网站| 成人免费看片视频在线观看| 国产精品久久麻豆| 亚洲精品欧美二区三区中文字幕| 91最新在线免费观看| 伊人网综合在线| 久久99久久99| 91午夜在线播放| 国产成人精品无码高潮| 国产91丝袜在线播放0| 成人激情直播| 四虎在线视频免费观看| 91一区一区三区| 奇米影视首页 狠狠色丁香婷婷久久综合| 中文字幕日日夜夜| 蜜臀a∨国产成人精品| 成人美女免费网站视频| 精品人妻av一区二区三区| 丁香婷婷综合网| 好看的日韩精品| 免费av在线电影| 中文字幕电影一区| 91麻豆天美传媒在线| xxx性欧美| 国产精品欧美综合在线| y111111国产精品久久婷婷| 亚洲国产福利视频| 91亚洲午夜精品久久久久久| 图片区小说区区亚洲五月| 二区三区在线观看| 久久久久久久久久久电影| 日本福利一区二区三区| 黄色免费在线看| 亚洲电影第三页| 日本美女高潮视频| 天堂av一区| 亚洲视频在线免费看| 97在线观看免费高| 亚洲精品一二| 国产精品最新在线观看| 高潮毛片7777777毛片| 国产日韩欧美一区二区三区综合| japanese在线视频| 午夜影院一区| 欧美一级高清片| 亚欧洲乱码视频| 欧美精品观看| 国产精品美女在线观看| 少妇精品视频一区二区| 国产精品剧情在线亚洲| 日韩av三级在线| 国产一区 二区| 亚洲欧美国产日韩中文字幕| 亚洲国产精品无码久久久久高潮| 激情五月综合网| 久久久久久久成人| 国产又爽又黄免费软件| 久久亚洲综合色一区二区三区| 国产乱码精品一区二区三区不卡| 黄视频在线观看免费| 一二三四社区欧美黄| 中文久久久久久| 欧美激情影院| 欧美国产日韩一区二区三区| 国产一二三四区| 丝袜亚洲另类欧美综合| 国产精品va在线播放| 亚洲欧美另类日韩| 中文字幕在线视频一区| 丝袜制服一区二区三区| 激情视频极品美女日韩| 亚洲精品在线不卡| 久久精品第一页| 精品一区二区在线免费观看| 日本高清不卡一区二区三| 97在线超碰| 日韩美女天天操| 成人免费毛片东京热| 免费欧美在线视频| 青青草成人网| 澳门成人av网| 日韩av综合网站| 阿v天堂2014| 性娇小13――14欧美| 国产精品久久久久久久久久久久冷| 麻豆传媒视频在线| 色八戒一区二区三区| 玖玖爱在线观看| 一本色道久久综合亚洲精品高清| www.久久久| 超碰成人av| 日韩高清欧美高清| 成年人视频在线免费看| 99久久精品国产网站| 欧美深夜福利视频| 欧美日日夜夜| 欧美一区二区三区免费观看| 天堂在线一二区| 亚洲特级片在线| 国产成年人视频网站| 国产精品88久久久久久| 91精品综合久久久久久五月天| 麻豆视频在线免费观看| 91精品国产色综合久久不卡蜜臀| 色婷婷狠狠18禁久久| 欧美日韩精品| 国产一区免费视频| 日本а中文在线天堂| 亚洲女人被黑人巨大进入| 97人妻一区二区精品视频| 欧美国产综合一区二区| 国产一区二区在线免费播放| 91九色精品| 97netav| 波多野结依一区| 亚洲精品999| 久草福利资源在线| 激情图片小说一区| 精品久久久无码人妻字幂| 国产精品毛片av| 国产999精品视频| 亚洲毛片欧洲毛片国产一品色| 亚洲第一搞黄网站| 国内精品久久99人妻无码| 日本中文字幕一区二区有限公司| 亚洲欧美成人一区| 免费成人直播| 中文字幕在线视频日韩| 国产高清第一页| 一区二区三区久久| 日韩在线免费观看av| 久久国产欧美日韩精品| 大陆av在线播放| 国产免费av一区二区三区| 成人精品久久一区二区三区| 男女免费观看在线爽爽爽视频| 欧美体内she精视频| 成人自拍小视频| 久久综合九色综合97婷婷| 一区二区在线免费看| 中国女人久久久| 在线观看成人一级片| 欧美美女在线直播| 成人久久一区二区三区| 天堂网在线最新版www中文网| 日韩亚洲第一页| 亚洲黄色在线免费观看| 欧美性欧美巨大黑白大战| 欧美日韩精品在线观看视频 | 大桥未久在线播放| 国产一区二区三区18| 性猛交xxxx乱大交孕妇印度| 在线中文字幕一区二区| www.99re7.com| 亚洲欧洲www| 亚洲熟妇一区二区三区| 国产精品一区一区三区| 国产精品久久久久9999小说| 亚洲天堂成人| 亚洲一区在线直播| 亚洲影院天堂中文av色| 99porn视频在线| 亚洲欧洲二区| 欧美综合国产精品久久丁香| 黄网站在线观| 美女啪啪无遮挡免费久久网站| 国产在线自天天| 日韩成人av一区| 亚洲精品911| 欧美精品久久99| 中文在线观看免费高清| 欧美视频在线观看免费| 日韩和一区二区| 亚洲主播在线播放| 五月综合色婷婷| 国产精品国产三级国产| 老熟妇一区二区| 久久久久久黄色| av直播在线观看| 99精品视频一区二区| 麻豆tv在线观看| 国产精品一区二区三区乱码 | 成人精品gif动图一区| www激情五月| 激情综合色丁香一区二区| 午夜剧场高清版免费观看| 青青草97国产精品免费观看无弹窗版| 人妻有码中文字幕| 亚洲一区二区三区四区五区午夜 | 国模一区二区三区白浆| 91福利免费观看| 国产最新精品免费| 欧美成人手机在线视频| 国产自产高清不卡| 日韩av片免费观看| 狠狠色综合日日| 曰本三级日本三级日本三级| 国产成人精品www牛牛影视| www日本在线观看| 成人h精品动漫一区二区三区| 丰满岳乱妇一区二区| 91在线小视频| 88久久精品无码一区二区毛片| 久久久久久久精| 亚洲精品天堂网| 亚洲青青青在线视频| 国产精品16p| 欧美丝袜第一区| 中文在线免费观看| 欧美一区二区三区在线观看| 亚洲精品免费在线观看视频| 亚洲国产精品国自产拍av秋霞| 欧美日韩伦理片| 色哟哟网站入口亚洲精品| av免费在线免费| 91精品国产色综合久久不卡98口| 亚洲啊v在线| 国产一区二区在线播放| 清纯唯美激情亚洲| 国产在线一区二区三区欧美| 超碰成人久久| 国产精品一区二区三区四区五区 | www.久久久久久久| 欧美日韩亚洲丝袜制服| 日韩欧美亚洲一区二区三区| 欧美性xxxx| 一本久道久久综合无码中文| 日韩一卡二卡三卡四卡| 午夜视频www| 这里只有精品在线观看| 污污的视频在线观看| 欧美一级片在线播放| 99久久99九九99九九九| 激情一区二区三区| 久久中文亚洲字幕| 成人网站免费观看入口| 蜜臀久久99精品久久久久宅男 | 欧美成人午夜激情在线| 成人在线黄色电影| 国产精品综合网站| 理论片一区二区在线| 一本一道久久久a久久久精品91| 欧美激情麻豆| 日日噜噜夜夜狠狠| jvid福利写真一区二区三区| 手机av在线看| 色婷婷av一区二区三区gif| 国产suv精品一区二区69| 国产一区二区三区日韩欧美| 国产精品国精产品一二| 国产日韩欧美中文| 爽爽窝窝午夜精品一区二区| 久久免费一级片| 日本欧美久久久久免费播放网| 东京热av一区| 亚洲欧洲综合另类| 久久精品视频2| 亚洲国产欧美自拍| 182tv在线播放| 国产精品亚洲一区二区三区| 日韩极品在线| 欧美中日韩在线| 国产一区二区伦理片| 在线视频这里只有精品| 色综合久久久久综合体桃花网| 亚洲精品国产精| 不卡av电影院| 中文字幕日本一区| 亚洲精品成人久久久998| 香蕉久久夜色精品| 国产性生活毛片| 亚洲国产欧美一区二区三区丁香婷| 在线观看免费观看在线| 亚洲欧洲一区二区三区在线观看| 福利在线免费视频| 国产精品日韩一区二区三区| 你懂的亚洲视频| 日韩精品视频网址| 丁香激情综合国产| 日本一级特级毛片视频| 欧美精品丝袜中出| 免费a视频在线观看| 欧美黑人一级爽快片淫片高清| 精品久久久久久久久久岛国gif| 亚洲在线欧美| 久久精品国产亚洲一区二区三区| 成人在线观看免费高清| 欧美性感一类影片在线播放| 黄色在线视频观看网站| 日韩av电影院| 精品国内自产拍在线观看视频 | 欧美亚洲色图视频| 国产精品99久久久| 久久久精品人妻一区二区三区四| 日韩视频免费观看高清在线视频| 性欧美videos高清hd4k| 国产精品日韩一区二区免费视频| 黄色成人91| 加勒比精品视频| 色噜噜狠狠一区二区三区果冻| 免费国产在线观看| 国产精品免费小视频| 久久在线视频| 日韩精品xxx| 婷婷中文字幕综合| 三级国产在线观看| 国产精品久久不能| 欧美独立站高清久久| 日本一区二区三区在线免费观看| 亚洲综合一区二区精品导航| 黄色av中文字幕| 日本91av在线播放| 日韩一区二区中文| 天天色天天干天天色| 亚洲v中文字幕| 国产美女视频一区二区三区 | 国产精品久久久久精| 久久国产精品免费视频| 美国十次av导航亚洲入口| 日韩视频在线免费看| 国产69精品一区二区亚洲孕妇| 国产在线综合网| 亚洲欧美国产日韩中文字幕| 亚洲人体在线| av女优在线播放| 国产嫩草影院久久久久| 国产欧美日韩成人| 午夜精品久久久久久久99黑人| 深爱激情综合网| 日本少妇激三级做爰在线| 天天色综合天天| 免费观看在线午夜影视| 国产乱码一区| 麻豆91在线看| 日韩人妻无码一区二区三区99| 国产一区二区三区精品久久久 | 成人18视频在线观看| 男人天堂新网址| 欧美韩日一区二区三区四区| 午夜精品久久久久久久爽 | 欧美二区在线播放| 校花撩起jk露出白色内裤国产精品| 一本色道久久亚洲综合精品蜜桃| 久久免费的精品国产v∧|