日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

七個常見的SQL慢查詢問題,及其解決方法

來源: 責編: 時間:2024-05-24 17:20:31 264觀看
導讀得益于摩爾定律,計算機性能已大幅提升,加上數(shù)據(jù)庫的進步以及微服務所倡導的各種反模式設計。因此,我們現(xiàn)在編寫復雜SQL查詢的機會越來越少。業(yè)界(是的,甚至包括谷歌)已經(jīng)開始提倡不要進行專門的SQL優(yōu)化,因為節(jié)省下來的資源

uMu28資訊網(wǎng)——每日最新資訊28at.com

得益于摩爾定律,計算機性能已大幅提升,加上數(shù)據(jù)庫的進步以及微服務所倡導的各種反模式設計。因此,我們現(xiàn)在編寫復雜SQL查詢的機會越來越少。業(yè)界(是的,甚至包括谷歌)已經(jīng)開始提倡不要進行專門的SQL優(yōu)化,因為節(jié)省下來的資源并不足以抵消員工的工資成本。但是,作為工程師,我們應該在技術上努力追求卓越,成為本領域的頂尖科學家。uMu28資訊網(wǎng)——每日最新資訊28at.com

在這里,將介紹7個常見的SQL慢查詢語句,并解釋如何優(yōu)化它們的性能。希望這對你有所幫助。uMu28資訊網(wǎng)——每日最新資訊28at.com

由DALLE-3生成由DALLE-3生成uMu28資訊網(wǎng)——每日最新資訊28at.com

1. LIMIT語句

分頁是最常用的方案之一,但也容易出現(xiàn)問題。例如,對于以下簡單的語句,DBA通常建議的解決方案是添加一個包含type、name和create_time字段的復合索引。這樣,條件和排序就可以有效利用索引,從而顯著提高性能。uMu28資訊網(wǎng)——每日最新資訊28at.com

SELECT *FROM   operationWHERE  type = 'SQLStats'       AND name = 'SlowLog'ORDER  BY create_timeLIMIT  1000, 10;

這可能會解決90%以上DBA的問題。但是,當LIMIT子句變成“LIMIT 1000000, 10”時,程序員仍會抱怨“為什么在只查詢10條記錄的時候,速度還這么慢?” 要知道,數(shù)據(jù)庫不知道第1000000條記錄從何處開始,所以即使有索引,它仍需要從頭開始計算。在大多數(shù)情況下,這個性能問題是由于懶惰編程造成的。uMu28資訊網(wǎng)——每日最新資訊28at.com

在前端數(shù)據(jù)瀏覽或批量導出大量數(shù)據(jù)的場景中,可以使用上一頁的最大值作為查詢參數(shù)。SQL可以重新設計如下:uMu28資訊網(wǎng)——每日最新資訊28at.com

SELECT   *FROM     operationWHERE    type = 'SQLStats'AND      name = 'SlowLog'AND      create_time > '2017-03-16 14:00:00'ORDER BY create_timeLIMIT    10;

采用這種新設計后,查詢時間保持不變,不會隨著數(shù)據(jù)量的增加而變化。uMu28資訊網(wǎng)——每日最新資訊28at.com

2. 隱式轉(zhuǎn)換

SQL語句中另一個常見的錯誤是查詢變量和字段定義的類型不匹配。以下面的語句為例:uMu28資訊網(wǎng)——每日最新資訊28at.com

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ù)被應用到表字段上,從而使索引失效。uMu28資訊網(wǎng)——每日最新資訊28at.com

這種情況可能是由應用程序框架自動填充參數(shù)造成的,而不是程序員的本意。如今,應用程序框架通常都很復雜,雖然它們提供了便利,但也可能帶來隱患。uMu28資訊網(wǎng)——每日最新資訊28at.com

3. 連接更新和刪除

盡管MySQL 5.6引入了物化,但它只優(yōu)化了SELECT語句。對于UPDATE或DELETE語句,需要使用JOIN手動重寫。uMu28資訊網(wǎng)——每日最新資訊28at.com

例如,請看下面的UPDATE語句。MySQL實際上執(zhí)行了一個循環(huán)/嵌套子查詢(DEPENDENT SUBQUERY),執(zhí)行時間可想而知。uMu28資訊網(wǎng)——每日最新資訊28at.com

UPDATE operation oSET    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í)行計劃如下:uMu28資訊網(wǎng)——每日最新資訊28at.com

+----+--------------------+-------+-------+---------------+---------+---------+-------+------+-----------------------------------------------------+| 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變?yōu)镈ERIVED,執(zhí)行時間顯著得從7秒縮短到2毫秒。uMu28資訊網(wǎng)——每日最新資訊28at.com

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.idSET    status = 'applying';

簡化后的執(zhí)行計劃如下:uMu28資訊網(wǎng)——每日最新資訊28at.com

+----+-------------+-------+------+---------------+-------+---------+-------+------+-----------------------------------------------------+| 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無法利用索引進行混合排序。但是,在某些場景下,仍然可以使用特殊方法來提高性能。uMu28資訊網(wǎng)——每日最新資訊28at.com

SELECT *FROM   my_order o       INNER JOIN my_appraise a ON a.orderid = o.idORDER  BY a.is_reply ASC,          a.appraise_time DESCLIMIT  0, 20;

執(zhí)行計劃顯示的是全表掃描:uMu28資訊網(wǎng)——每日最新資訊28at.com

+----+-------------+-------+--------+-------------+---------+---------+---------------+---------+-+| 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毫秒:uMu28資訊網(wǎng)——每日最新資訊28at.com

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)) tORDER  BY  is_reply ASC,          appraisetime DESCLIMIT  20;

5. EXISTS語句

在處理EXISTS子句時,MySQL仍然使用嵌套子查詢進行執(zhí)行。以下面的SQL語句為例:uMu28資訊網(wǎng)——每日最新資訊28at.com

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;
+----+--------------------+-------+------+-----+------------------------------------------+---------+-------+---------+ -----+| 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毫秒。uMu28資訊網(wǎng)——每日最新資訊28at.com

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í)行計劃如下:uMu28資訊網(wǎng)——每日最新資訊28at.com

+----+-------------+-------+--------+ -----+------------------------------------------+---------+ -----+------+ -----+| 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. 條件下推

在某些情況下,外部查詢條件無法下推到復雜的視圖或子查詢中:uMu28資訊網(wǎng)——每日最新資訊28at.com

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

請看下面的語句,其中的條件會影響聚合子查詢:uMu28資訊網(wǎng)——每日最新資訊28at.com

SELECT *FROM   (SELECT target,               Count(*)        FROM   operation        GROUP  BY target) tWHERE  target = 'rm-xxxx';
+----+-------------+------------+-------+---------------+-------------+---------+-------+------+-------------+| id | select_type | table      | type  | possible_keys | key         | key_len | ref   | rows | Extra       |+----+-------------+------------+-------+---------------+-------------+---------+-------+------+-------------+|  1 | PRIMARY     | n          | ALL   | NULL          | NULL        | NULL    | NULL  | 1086041 | Using where ||  1 | PRIMARY     | sra        | ref   | NULL          | idx_user_id | 123     | const |    1 | Using where ||  2 | DEPENDENT SUBQUERY | m | ref   | NULL          | idx_message_info   | 122     | const |    1 | Using index condition; Using where |+----+-------------+------------+-------+---------------+-------------+---------+-------+------+-------------+

通過刪除EXISTS子句并將其更改為JOIN,我們可以避免嵌套子查詢并將執(zhí)行時間從1.93秒減少到1毫秒。uMu28資訊網(wǎng)——每日最新資訊28at.com

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í)行計劃如下:uMu28資訊網(wǎng)——每日最新資訊28at.com

+----+-------------+-------+--------+ -----+------------------------------------------+---------+ -----+------+ -----+| 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           |+----+-------------+-------+--------+ -----+------------------------------------------+---------+ -----+------+ -----+

7. 提前縮小范圍

讓我們看看以下經(jīng)過部分優(yōu)化的示例(左連接中的主表作為主查詢條件):uMu28資訊網(wǎng)——每日最新資訊28at.com

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

這條語句是否還存在其他問題?很明顯,子查詢c是對整個表進行聚合查詢,在處理大量表時可能會導致性能下降。uMu28資訊網(wǎng)——每日最新資訊28at.com

事實上,對于子查詢c,左連接的結(jié)果集只關心可以與主表的resourceid匹配的數(shù)據(jù)。因此,我們可以將語句重寫如下,將執(zhí)行時間從2秒減少到2毫秒:uMu28資訊網(wǎng)——每日最新資訊28at.com

SELECT    a.*,          c.allocatedFROM      (                   SELECT   resourceid                   FROM     my_distribute d                   WHERE    isdelete = 0                   AND      cusmanagercode = '1234567'                   ORDER BY salecode limit 20) aLEFT 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) cON        a.resourceid = c.resourcesid;

然而,子查詢a在我們的SQL語句中出現(xiàn)了多次。這種方法不僅會產(chǎn)生額外的成本,而且也會使語句變得更加復雜。我們可以使用WITH語句來簡化它:uMu28資訊網(wǎng)——每日最新資訊28at.com

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

結(jié)論

數(shù)據(jù)庫編譯器生成的執(zhí)行計劃決定了SQL語句的實際執(zhí)行方式。但是,編譯器只能盡力提供服務,沒有一個數(shù)據(jù)庫編譯器是完美的。上述情況在其他數(shù)據(jù)庫中也同樣存在。了解了數(shù)據(jù)庫編譯器的特性,我們就能繞過它的限制,編寫出高性能的SQL語句。uMu28資訊網(wǎng)——每日最新資訊28at.com

在設計數(shù)據(jù)模型和編寫SQL語句時,將算法思維或算法意識引入到這個過程非常重要。在編寫復雜的SQL語句時,養(yǎng)成使用WITH語句的習慣可以簡化語句,減輕數(shù)據(jù)庫的負擔。uMu28資訊網(wǎng)——每日最新資訊28at.com

最后,下面是SQL語句的執(zhí)行順序:uMu28資訊網(wǎng)——每日最新資訊28at.com

FROMON JOINWHEREGROUP BYHAVINGSELECTDISTINCTORDER BYLIMIT


uMu28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-90655-0.html七個常見的SQL慢查詢問題,及其解決方法

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 20 種不同并發(fā)模型示例,帶你深入理解并發(fā)模型

下一篇: 水下數(shù)據(jù)中心的殺手:聲波攻擊

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久先锋影音| 亚洲一级在线观看| 国产伊人精品| 国产一区二区三区网站| 禁久久精品乱码| 亚洲精品社区| 亚洲午夜伦理| 久久综合九色欧美综合狠狠| 欧美华人在线视频| 国产精品久久久久久妇女6080| 国产伦精品一区二区三区照片91| 国产亚洲欧美日韩美女| 亚洲国产精品久久久久婷婷老年| a91a精品视频在线观看| 午夜一区二区三区在线观看| 免费亚洲电影在线| 欧美午夜精品一区| 一区二区在线看| 一区二区三区欧美视频| 久久精品成人一区二区三区| 欧美精品在线观看| 国产精品婷婷| 亚洲全部视频| 午夜欧美视频| 欧美精品不卡| 国产婷婷色一区二区三区四区| 亚洲激情国产| 香蕉尹人综合在线观看| 欧美精品高清视频| 国产在线观看精品一区二区三区| 99在线精品视频| 久久在线视频| 国产乱码精品一区二区三| 最新日韩在线| 久久精品国产欧美激情| 欧美三级午夜理伦三级中视频| 极品尤物av久久免费看 | 狠狠干综合网| 一本色道久久精品| 久久综合一区二区三区| 国产精品青草久久| 99视频+国产日韩欧美| 久久男人资源视频| 国产精品日本一区二区| 日韩视频永久免费观看| 久久视频一区| 国产欧美精品日韩| 在线一区二区日韩| 欧美国产日韩一二三区| 影音先锋日韩有码| 久久国产66| 国产精品日日做人人爱| 日韩视频在线免费| 免费观看成人www动漫视频| 国产日韩欧美中文| 亚洲永久在线观看| 欧美日韩国产在线播放网站| 亚洲国产精品免费| 久久夜色精品亚洲噜噜国产mv | 国产精品久久久久一区二区| 亚洲人成毛片在线播放| 久久亚洲风情| 国内久久精品视频| 欧美一区二区三区视频| 国产精品美女主播在线观看纯欲| 99人久久精品视频最新地址| 欧美国产丝袜视频| 亚洲高清免费在线| 久久中文精品| 狠久久av成人天堂| 久久精品在这里| 狠狠操狠狠色综合网| 久久激情视频| 国内精品一区二区| 久久精品成人欧美大片古装| 国产一区激情| 久久久久成人精品免费播放动漫| 国产一区亚洲一区| 久久精品视频网| 黄色一区二区三区四区| 久久久久久久性| 一区三区视频| 美国十次成人| 亚洲激情综合| 欧美激情偷拍| 日韩一区二区精品葵司在线| 欧美日韩国产精品专区| 夜夜嗨av一区二区三区| 欧美午夜精品电影| 亚洲欧美日韩一区二区三区在线| 国产精品日本一区二区| 午夜一区二区三视频在线观看 | 中日韩美女免费视频网站在线观看| 欧美日韩亚洲三区| 亚洲小说欧美另类社区| 国产精品久久久久毛片大屁完整版| 亚洲一区二区三区四区在线观看 | 亚洲欧洲精品天堂一级| 欧美成人一区二免费视频软件| 亚洲欧洲综合另类| 欧美日韩国产美女| 亚洲午夜免费福利视频| 国产目拍亚洲精品99久久精品 | 国产精品卡一卡二| 欧美亚洲视频| 激情自拍一区| 欧美精品首页| 亚洲制服av| 国产综合网站| 欧美不卡在线| 中文亚洲欧美| 国产亚洲欧美一区在线观看| 猫咪成人在线观看| 一区二区三区成人| 国产嫩草一区二区三区在线观看| 久久久久九九视频| 亚洲伦理在线免费看| 国产精品久久久久久久7电影| 欧美一区二区三区视频在线| 激情欧美一区二区三区| 欧美人妖另类| 欧美在线一区二区| 最近中文字幕mv在线一区二区三区四区 | 国产精品视频yy9299一区| 欧美专区第一页| 最近看过的日韩成人| 国产精品www色诱视频| 欧美诱惑福利视频| 亚洲人成绝费网站色www| 国产精品久久久久久久电影| 久久久夜夜夜| 亚洲视频欧美在线| 精品999成人| 欧美三级不卡| 久久久亚洲成人| 一区二区三区精品| 狠狠色狠狠色综合日日小说| 欧美日韩精品一区二区在线播放| 欧美专区在线播放| 日韩一级免费观看| 国产综合久久久久影院| 欧美日韩国产综合网 | 一区二区欧美亚洲| 狠狠色丁香久久婷婷综合丁香| 欧美日韩国产综合视频在线观看中文| 欧美一区二区精品| 日韩一二三区视频| 伊人激情综合| 国产精品免费看久久久香蕉| 欧美a级在线| 午夜在线精品| 亚洲毛片视频| 狠狠色2019综合网| 国产精品日韩在线| 欧美激情一区二区久久久| 久久av红桃一区二区小说| 一区二区福利| 亚洲国产精品ⅴa在线观看| 国产区精品在线观看| 欧美日韩国产美| 麻豆精品91| 欧美有码视频| 亚洲一区二区在线看| 亚洲精品美女在线观看| 好吊色欧美一区二区三区四区| 国产精品高清在线| 欧美日韩精品福利| 欧美成人免费va影院高清| 欧美在线三级| 亚洲在线播放电影| 一区二区三区产品免费精品久久75 | 欧美精品激情blacked18| 久久午夜精品一区二区| 欧美一区二区视频网站| 亚洲视频免费| 亚洲精品影院在线观看| 精久久久久久| 国色天香一区二区| 国产欧美日韩综合一区在线播放| 欧美视频在线观看 亚洲欧| 欧美激情一级片一区二区| 美玉足脚交一区二区三区图片| 久久久国产91| 久久大综合网| 性久久久久久久久| 亚洲综合清纯丝袜自拍| 亚洲社区在线观看| 一个色综合av| 这里只有精品丝袜| 一区二区激情视频| 一区二区激情| 在线视频精品一| 一本久道久久久| 夜夜嗨网站十八久久| 99国产精品视频免费观看一公开| 亚洲精品欧美极品| 亚洲精选在线| 夜夜夜久久久| 这里只有视频精品| 亚洲一区二区三区777| 亚洲一区二区免费视频| 亚洲一级二级在线| 午夜精品久久久久99热蜜桃导演| 午夜久久黄色|