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

MySQL EXPLAIN命令詳解學習

數(shù)據庫
MySQL的EXPLAIN命令用于SQL語句的查詢執(zhí)行計劃(QEP)。這條命令的輸出結果能夠讓我們了解MySQL 優(yōu)化器是如何執(zhí)行SQL 語句的。這條命令并沒有提供任何調整建議,但它能夠提供重要的信息幫助你做出調優(yōu)決策。

MySQL EXPLAIN命令詳解學習

MySQL的EXPLAIN命令用于SQL語句的查詢執(zhí)行計劃(QEP)。這條命令的輸出結果能夠讓我們了解MySQL 優(yōu)化器是如何執(zhí)行SQL 語句的。這條命令并沒有提供任何調整建議,但它能夠提供重要的信息幫助你做出調優(yōu)決策。

1. 語法

MySQL 的EXPLAIN 語法可以運行在SELECT 語句或者特定表上。如果作用在表上,那么此命令等同于DESC 表命令。UPDATE和DELETE 命令也需要進行性能改進,當這些命令不是直接在表的主碼上運行時,為了確保***化的索引使用率,需要把它們改寫成SELECT 語句(以便對它們執(zhí)行EXPLAIN 命令)。請看下面的示例:

  1. UPDATE table1   
  2.  
  3. SET col1 = X, col2 = Y   
  4.  
  5. WHERE id1 = 9   
  6.  
  7. AND dt >= '2010-01-01' 

這個UPDATE語句可以被重寫成為下面這樣的SELECT語句:

  1. SELECT col1, col2   
  2.  
  3. FROM table1   
  4.  
  5. WHERE id1 = 9   
  6.  
  7. AND dt >= '2010-01-01' 

在5.6.10版本里面,是可以直接對dml語句進行explain分析操作的.

MySQL 優(yōu)化器是基于開銷來工作的,它并不提供任何的QEP的位置。這意味著QEP 是在每條SQL 語句執(zhí)行的時候動態(tài)地計

算出來的。在MySQL 存儲過程中的SQL 語句也是在每次執(zhí)行時計算QEP 的。存儲過程緩存僅僅解析查詢樹。

2. 各列詳解

MySQL EXPLAIN命令能夠為SQL語句中的每個表生成以下信息:

  1. mysql> EXPLAIN SELECT * FROM inventory WHERE item_id = 16102176\G;   
  2.  
  3.   ********************* 1. row ***********************   
  4.  
  5.   id: 1   
  6.  
  7.   select_type: SIMPLE   
  8.  
  9.   table: inventory   
  10.  
  11.   type: ALL   
  12.  
  13.   possible_keys: NULL   
  14.  
  15.   keyNULL   
  16.  
  17.   key_len: NULL   
  18.  
  19.   ref: NULL   
  20.  
  21.   rows: 787338   
  22.  
  23.   Extra: Using where  

這個QEP 顯示沒有使用任何索引(也就是全表掃描)并且處理了大量的行來滿足查詢。對同樣一條SELECT 語句,一個優(yōu)化過的QEP 如下所示:

  1. ********************* 1. row ***********************   
  2.  
  3. id: 1   
  4.  
  5. select_type: SIMPLE   
  6.  
  7. table: inventory   
  8.  
  9. type: ref   
  10.  
  11. possible_keys: item_id   
  12.  
  13. key: item_id   
  14.  
  15. key_len: 4   
  16.  
  17. ref: const   
  18.  
  19. rows: 1   
  20.  
  21. Extra:  

在這個QEP 中,我們看到使用了一個索引,且估計只有一行數(shù)據將被獲取。

QEP 中每個行的所有列表如下所示:

 id

 select_type

 table

 partitions(這一列只有在EXPLAIN PARTITIONS 語法中才會出現(xiàn))

 possible_keys

 key

 key_len

 ref

 rows

 filtered(這一列只有在EXPLAINED EXTENDED 語法中才會出現(xiàn))

 Extra

這些列展示了SELECT 語句對每一個表的QEP。一個表可能和一個物理模式表或者在SQL 執(zhí)行時生成的內部臨時表(例如從子查詢或者合并操作會產生內部臨時表)相關聯(lián)。

可以參考MySQL Reference Manual 獲得更多信息:http://dev.mysql.com/doc/refman/5.5/en/explain-output.html。

2.1 key

key 列指出優(yōu)化器選擇使用的索引。一般來說SQL 查詢中的每個表都僅使用一個索引。也存在索引合并的少數(shù)例外情況,如給定表上用到了兩個或者更多索引。

下面是QEP 中key 列的示例:

key: item_id

key: NULL

key: first, last

SHOW CREATE TABLE <table>命令是最簡單的查看表和索引列細節(jié)的方式。和key 列相關的列還包括possible_keys、rows 以及key_len。

2.2 ROWS

rows 列提供了試圖分析所有存在于累計結果集中的行數(shù)目的MySQL 優(yōu)化器估計值。QEP 很容易描述這個很困難的統(tǒng)計量。

查詢中總的讀操作數(shù)量是基于合并之前行的每一行的rows 值的連續(xù)積累而得出的。這是一種嵌套行算法。

以連接兩個表的QEP 為例。通過id=1 這個條件找到的***行的rows 值為1,這等于對***個表做了一次讀操作。第二行是

通過id=2 找到的,rows 的值為5。這等于有5 次讀操作符合當前1 的積累量。參考兩個表,讀操作的總數(shù)目是6。在另一個QEP

中,***rows 的值是5,第二rows 的值是1。這等于***個表有5 次讀操作,對5個積累量中每個都有一個讀操作。因此兩個表

總的讀操作的次數(shù)是10(5+5)次。

***的估計值是1,一般來說這種情況發(fā)生在當尋找的行在表中可以通過主鍵或者唯一鍵找到的時候。

在下面的QEP 中,外面的嵌套循環(huán)可以通過id=1 來找到,其估計的物理行數(shù)是1。第二個循環(huán)處理了10行。

  1. ********************* 1. row ***********************   
  2.  
  3. id: 1   
  4.  
  5. select_type: SIMPLE   
  6.  
  7. table: p   
  8.  
  9. type: const   
  10.  
  11. possible_keys: PRIMARY   
  12.  
  13. keyPRIMARY   
  14.  
  15. key_len: 4   
  16.  
  17. ref: const   
  18.  
  19. rows: 1   
  20.  
  21. Extra:   
  22.  
  23. ********************* 2. row ***********************   
  24.  
  25. id: 1   
  26.  
  27. select_type: SIMPLE   
  28.  
  29. table: c   
  30.  
  31. type: ref   
  32.  
  33. possible_keys: parent_id   
  34.  
  35. key: parent_id   
  36.  
  37. key_len: 4   
  38.  
  39. ref: const   
  40.  
  41. rows: 10   
  42.  
  43. Extra:  

可以使用SHOW STATUS 命令來查看實際的行操作。這個命令可以提供***的確認物理行操作的方式。請看下面的示例:

  1. mysql> SHOW SESSION STATUS LIKE 'Handler_read%';   
  2.  
  3. +-----------------------+-------+   
  4.  
  5. | Variable_name         | Value |   
  6.  
  7. +-----------------------+-------+   
  8.  
  9. | Handler_read_first    | 0     |   
  10.  
  11. | Handler_read_key      | 0     |    
  12.  
  13. | Handler_read_last     | 0     |   
  14.  
  15. | Handler_read_next     | 0     |   
  16.  
  17. | Handler_read_prev     | 0     |   
  18.  
  19. | Handler_read_rnd      | 0     |   
  20.  
  21. | Handler_read_rnd_next | 11    |   
  22.  
  23. +-----------------------+-------+   
  24.  
  25. rows in set (0.00 sec)  

在下一個QEP 中,通過id=1 找到的外層嵌套循環(huán)估計有160行。第二個循環(huán)估計有1 行。

  1. ********************* 1. row ***********************   
  2.  
  3. id: 1   
  4.  
  5. select_type: SIMPLE   
  6.  
  7. table: p   
  8.  
  9. type: ALL   
  10.  
  11. possible_keys: NULL   
  12.  
  13. keyNULL   
  14.  
  15. key_len: NULL   
  16.  
  17. ref: NULL   
  18.  
  19. rows: 160   
  20.  
  21. Extra:   
  22.  
  23. ********************* 2. row ***********************   
  24.  
  25. id: 1   
  26.  
  27. select type: SIMPLE   
  28.  
  29. table: c   
  30.  
  31. type: ref   
  32.  
  33. possible_keys: PRIMARY,parent_id   
  34.  
  35. key: parent_id   
  36.  
  37. key_len: 4   
  38.  
  39. ref: test.p.parent_id   
  40.  
  41. rows: 1   
  42.  
  43. Extra: Using where    

通過SHOW STATUS 命令可以查看實際的行操作,該命令表明物理讀操作數(shù)量大幅增加。請看下面的示例:

  1. mysql> SHOW SESSION STATUS LIKE 'Handler_read%';   
  2.  
  3. +--------------------------------------+---------+   
  4.  
  5. | Variable_name | Value |   
  6.  
  7. +--------------------------------------+---------+   
  8.  
  9. | Handler_read_first | 1 |   
  10.  
  11. | Handler_read_key | 164 |   
  12.  
  13. | Handler_read_last | 0 |   
  14.  
  15. | Handler_read_next | 107 |   
  16.  
  17. | Handler_read_prev | 0 |   
  18.  
  19. | Handler_read_rnd | 0 |   
  20.  
  21. | Handler_read_rnd_next | 161 |   
  22.  
  23. +--------------------------------------+---------+   

相關的QEP 列還包括key列。

2.3 possible_keys

possible_keys 列指出優(yōu)化器為查詢選定的索引。

一個會列出大量可能的索引(例如多于3 個)的QEP 意味著備選索引數(shù)量太多了,同時也可能提示存在一個無效的單列索引。

可以用第2 章詳細介紹過的SHOW INDEXES 命令來檢查索引是否有效且是否具有合適的基數(shù)。

為查詢確定QEP 的速度也會影響到查詢的性能。如果發(fā)現(xiàn)有大量的可能的索引,則意味著這些索引沒有被使用到。

相關的QEP 列還包括key 列。

2.4 key_len

key_len 列定義了用于SQL 語句的連接條件的鍵的長度。此列值對于確認索引的有效性以及多列索引中用到的列的數(shù)目很重要。

此列的一些示例值如下所示:

此列的一些示例值如下所示:

  1. key_len: 4 // INT NOT NULL 
  2.  
  3. key_len: 5 // INT NULL 
  4.  
  5. key_len: 30 // CHAR(30) NOT NULL 
  6.  
  7. key_len: 32 // VARCHAR(30) NOT NULL 
  8.  
  9. key_len: 92 // VARCHAR(30) NULL CHARSET=utf8  

從這些示例中可以看出,是否可以為空、可變長度的列以及key_len 列的值只和用在連接和WHERE 條件中的索引的列有關。索引中的其他列會在ORDER BY或者GROUP BY 語句中被用到。下面這個來自于著名的開源博客軟件WordPress 的表展示了如何以***方式使用帶有定義好的表索引的SQL 語句:

  1. CREATE TABLE `wp_posts` (   
  2.  
  3. `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,   
  4.  
  5. `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',   
  6.  
  7. `post_status` varchar(20) NOT NULL DEFAULT 'publish' ,   
  8.  
  9. `post_type` varchar(20) NOT NULL DEFAULT 'post',   
  10.  
  11. PRIMARY KEY (`ID`),   
  12.  
  13. KEY `type_status_date`(`post_type`,`post_status`,`post_date`,`ID`)   
  14.  
  15. DEFAULT CHARSET=utf8   
  16.  
  17.    
  18.  
  19. CREATE TABLE `wp_posts` (   
  20.  
  21. `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,   
  22.  
  23. `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',   
  24.  
  25. `post_status` varchar(20) NOT NULL DEFAULT 'publish' ,   
  26.  
  27. `post_type` varchar(20) NOT NULL DEFAULT 'post',   
  28.  
  29. PRIMARY KEY (`ID`),   
  30.  
  31. KEY `type_status_date`(`post_type`,`post_status`,`post_date`,`ID`)   
  32.  
  33. DEFAULT CHARSET=utf8  

這個表的索引包括post_type、post_status、post_date 以及ID列。下面是一個演示索引列用法的SQL 查詢:

  1. EXPLAIN SELECT ID, post_title FROM wp_posts WHERE post_type=’post’ AND post_date > ‘2010-06-01’; 

這個查詢的QEP 返回的key_len 是62。這說明只有post_type列上的索引用到了(因為(20×3)+2=62)。盡管查詢在WHERE 語句中使用了post_type 和post_date 列,但只有post_type 部分被用到了。其他索引沒有被使用的原因是MySQL 只能使用定義索引的最左邊部分。為了更好地利用這個索引,可以修改這個查詢來調整索引的列。請看下面的示例:

  1. mysql> EXPLAIN SELECT ID, post_title   
  2.  
  3. -> FROM wp_posts   
  4.  
  5. -> WHERE post_type='post'   
  6.  
  7. -> AND post_status='publish'   
  8.  
  9. -> AND post_date > '2010-06-01' 

在SELECT查詢的添加一個post_status 列的限制條件后,QEP顯示key_len 的值為132,這意味著post_type、post_status、post_date三列(62+62+8,(20×3)+2,(20×3)+2,8)都被用到了。此外,這個索引的主碼列ID 的定義是使用MyISAM 存儲索引的遺留痕跡。當使用InnoDB 存儲引擎時,在非主碼索引中包含主碼列是多余的,這可以從key_len 的用法看出來。

相關的QEP 列還包括帶有Using index 值的Extra 列。

2.5 table

table 列是EXPLAIN 命令輸出結果中的一個單獨行的唯一標識符。這個值可能是表名、表的別名或者一個為查詢產生臨時表的標識符,如派生表、子查詢或集合。下面是QEP 中table 列的一些示例:

table: item

table: <derivedN>

table: <unionN,M>

表中N 和M 的值參考了另一個符合id 列值的table 行。相關的QEP 列還有select_type

2.6 select_type

select_type 列提供了各種表示table 列引用的使用方式的類型。最常見的值包括SIMPLE、PRIMARY、DERIVED 和UNION。其他可能的值還有UNION RESULT、DEPENDENT SUBQUERY、DEPENDENT UNION、UNCACHEABLE UNION 以及UNCACHEABLE QUERY。

1). SIMPLE

對于不包含子查詢和其他復雜語法的簡單查詢,這是一個常 見的類型。

2). PRIMARY

這是為更復雜的查詢而創(chuàng)建的首要表(也就是最外層的表)。這個類型通??梢栽贒ERIVED 和UNION 類型混合使用時見到。

3). DERIVED

當一個表不是一個物理表時,那么就被叫做DERIVED。下面的SQL 語句給出了一個QEP 中DERIVED select-type 類型的

示例: 

  1. mysql> EXPLAIN SELECT MAX(id) 
  2.  
  3. -> FROM (SELECT id FROM users WHERE first = ‘west’) c;  

4). DEPENDENT SUBQUERY

這個select-type 值是為使用子查詢而定義的。下面的SQL語句提供了這個值:

  1. mysql> EXPLAIN SELECT p.* 
  2.  
  3. -> FROM parent p 
  4.  
  5. -> WHERE p.id NOT IN (SELECT c.parent_id FROM child c);  

5). UNION

這是UNION 語句其中的一個SQL 元素。

6). UNION RESULT

這是一系列定義在UNION 語句中的表的返回結果。當select_type 為這個值時,經??梢钥吹絫able 的值是<unionN,M>,這說明匹配的id 行是這個集合的一部分。下面的SQL產生了一個UNION和UNION RESULT select-type:

  1. mysql> EXPLAIN SELECT p.* FROM parent p WHERE p.val 
  2.  
  3. LIKE ‘a%’ 
  4.  
  5. -> UNION 
  6.  
  7. -> SELECT p.* FROM parent p WHERE p.id > 5;  

2.7 partitions

partitions 列代表給定表所使用的分區(qū)。這一列只會在EXPLAIN

PARTITIONS 語句中出現(xiàn)。

2.8 Extra

Extra 列提供了有關不同種類的MySQL 優(yōu)化器路徑的一系列額外信息。Extra 列可以包含多個值,可以有很多不同的取值,并且這些值還在隨著MySQL 新版本的發(fā)布而進一步增加。下面給出常用值的列表。你可以從下面的地址找到更全面的值的列表:http://dev.mysql.com/doc/refman/5.5/en/explain-output.html。

1). Using where

這個值表示查詢使用了where 語句來處理結果——例如執(zhí)行全表掃描。如果也用到了索引,那么行的限制條件是通過獲取必要的數(shù)據之后處理讀緩沖區(qū)來實現(xiàn)的。

2). Using temporary

這個值表示使用了內部臨時(基于內存的)表。一個查詢可能用到多個臨時表。有很多原因都會導致MySQL 在執(zhí)行查詢期間創(chuàng)建臨時表。兩個常見的原因是在來自不同表的列上使用了DISTINCT,或者使用了不同的ORDER BY 和GROUP BY 列。想了解更多內容可以訪問http://forge.mysql.com/wiki/Overview_of_query_execution_and_use_of_temp_tables??梢詮娭浦付ㄒ粋€臨時表使用基于磁盤的MyISAM 存儲引擎。

這樣做的原因主要有兩個:

 內部臨時表占用的空間超過min(tmp_table_size,max_heap_table_size)系統(tǒng)變量的限制

 使用了TEXT/BLOB 列

3). Using filesort

這是ORDER BY 語句的結果。這可能是一個CPU 密集型的過程??梢酝ㄟ^選擇合適的索引來改進性能,用索引來為查詢結果排序。詳細過程請參考第4章。

4). Using index

這個值重點強調了只需要使用索引就可以滿足查詢表的要求,不需要直接訪問表數(shù)據。請參考第5 章的詳細示例來理解這個值。

5). Using join buffer

這個值強調了在獲取連接條件時沒有使用索引,并且需要連接緩沖區(qū)來存儲中間結果。如果出現(xiàn)了這個值,那應該注意,根據查詢的具體情況可能需要添加索引來改進性能。

6). Impossible where

這個值強調了where 語句會導致沒有符合條件的行。請看下面的示例:mysql> EXPLAIN SELECT * FROM user WHERE 1=2;

7). Select tables optimized away

這個值意味著僅通過使用索引,優(yōu)化器可能僅從聚合函數(shù)結果中返回一行。

8). Distinct

這個值意味著MySQL 在找到***個匹配的行之后就會停止搜索其他行。

9). Index merges

當MySQL 決定要在一個給定的表上使用超過一個索引的時候,就會出現(xiàn)以下格式中的一個,詳細說明使用的索引以及合并的類型。

 Using sort_union(…)

 Using union(…)

 Using intersect(…)

2.9 id

id 列是在QEP 中展示的表的連續(xù)引用。

2.10 ref

ref 列可以被用來標識那些用來進行索引比較的列或者常量。

2.11 filtered

filtered 列給出了一個百分比的值,這個百分比值和rows 列的值一起使用,可以估計出那些將要和QEP 中的前一個表進行連接的行的數(shù)目。前一個表就是指id 列的值比當前表的id 小的表。這一列只有在EXPLAIN EXTENDED 語句中才會出現(xiàn)。

2.12 type

type 列代表QEP 中指定的表使用的連接方式。下面是最常用的幾種連接方式:

 const 當這個表最多只有一行匹配的行時出現(xiàn)system 這是const 的特例,當表只有一個row 時會出現(xiàn)

 eq_ref 這個值表示有一行是為了每個之前確定的表而讀取的

 ref 這個值表示所有具有匹配的索引值的行都被用到

 range 這個值表示所有符合一個給定范圍值的索引行都被用到

 ALL 這個值表示需要一次全表掃描其他類型的值還有fulltext 、ref_or_null 、index_merge 、unique_subquery、index_subquery 以及index。

想了解更多信息可以訪問http://dev.mysql.com/doc/refman/5.5/en/explain-output.html。

3. 解釋EXPLAIN 輸出結果

理解你的應用程序(包括技術和實現(xiàn)可能性)和優(yōu)化SQL 語句同等重要。下面給出一個從父子關系中獲取孤立的父輩記錄的商業(yè)需求的例子。這個查詢可以用三種不同的方式構造。盡管會產生相同的結果,但QEP 會顯示三種不同的路徑。  

  1. mysql> EXPLAIN SELECT p.* 
  2.  
  3. -> FROM parent p   
  4.  
  5. -> WHERE p.id NOT IN (SELECT c.parent_id FROM child   
  6.  
  7. c)\G   
  8.  
  9. ********************* 1. row ***********************   
  10.  
  11. id: 1   
  12.  
  13. select type: PRIMARY   
  14.  
  15. table: p   
  16.  
  17. type: ALL   
  18.  
  19. possible_keys: NULL   
  20.  
  21. keyNULL   
  22.  
  23. key_len: NULL   
  24.  
  25. ref: NULL   
  26.  
  27. rows: 160   
  28.  
  29. Extra: Using where   
  30.  
  31. ********************* 2. row ***********************   
  32.  
  33. id: 2   
  34.  
  35. select_type: DEPENDENT SUBQUERY   
  36.  
  37. table: c   
  38.  
  39. type: index_subquery   
  40.  
  41. possible_keys: parent_id   
  42.  
  43. key: parent_id   
  44.  
  45. key_len: 4   
  46.  
  47. ref: func   
  48.  
  49. rows: 1   
  50.  
  51. Extra: Using index   
  52.  
  53. rows in set (0.00 sec)   
  54.  
  55.    
  56.  
  57. EXPLAIN SELECT p.* FROM parent p LEFT JOIN child c ON p.id = c.parent_id WHERE c.child_id IS NULL\G   
  58.  
  59. ********************* 1. row ***********************   
  60.  
  61. id: 1   
  62.  
  63. select_type: SIMPLE   
  64.  
  65. table: p   
  66.  
  67. type: ALL   
  68.  
  69. possible_keys: NULL   
  70.  
  71. keyNULL   
  72.  
  73. key_len: NULL   
  74.  
  75. ref: NULL   
  76.  
  77. rows: 160   
  78.  
  79. Extra:   
  80.  
  81. ********************* 2. row ***********************   
  82.  
  83. id: 1   
  84.  
  85. select_type: SIMPLE   
  86.  
  87. table: c   
  88.  
  89. type: ref   
  90.  
  91. possible_keys: parent_id   
  92.  
  93. key: parent_id   
  94.  
  95. key_len: 4   
  96.  
  97. ref: test.p.id   
  98.  
  99. rows: 1   
  100.  
  101. Extra: Using where; Using indexNot exists   
  102.  
  103. rows in set (0.00 sec)  
責任編輯:龐桂玉 來源: 數(shù)據庫開發(fā)
相關推薦

2009-12-10 16:12:07

EXPLAIN

2017-07-27 20:00:47

MySQLEXPLAIN命令

2024-12-11 13:14:27

2023-09-21 10:55:51

MysqlSQL語句

2011-08-23 13:16:41

SQLEXPLAIN

2025-02-19 07:49:36

2010-10-12 13:55:41

MySQL EXPLA

2021-02-20 08:40:19

HiveExplain底層

2011-08-22 15:05:03

MySQLEXPLAIN

2023-11-10 09:29:30

MySQLExplain

2021-01-18 07:31:52

MySQL LeetCode查詢

2010-05-19 10:37:06

MySQL expla

2011-08-18 11:31:06

MySQL性能分析explain

2025-02-18 12:50:00

MySQL命令數(shù)據庫

2024-09-12 15:16:14

2015-08-10 14:42:40

Explain SheShell 命令

2011-08-23 13:56:12

MySQLConnection

2020-10-19 19:45:58

MySQL數(shù)據庫優(yōu)化

2010-05-21 16:55:47

MySQL EXPLA

2011-05-13 09:16:03

Mysqlmysqldump命令
點贊
收藏

51CTO技術棧公眾號

国产精品日韩在线| 日韩国产欧美精品一区二区三区| 中文字幕免费在线不卡| www.国产免费| 日韩精品成人一区二区在线| 久久久999国产| 天天插天天射天天干| 91国内外精品自在线播放| 亚洲免费高清视频在线| 久久久久久亚洲精品不卡4k岛国 | 中日韩视频在线观看| 在线观看久久久久久| 人妻互换一二三区激情视频| 素人一区二区三区| 午夜私人影院久久久久| 自拍偷拍99| 免费在线一级视频| 粉嫩高潮美女一区二区三区| 国产日韩欧美中文| 中文字幕国产在线观看| 在线高清一区| 久久精品国产69国产精品亚洲| 国产精品揄拍100视频| 亚洲精品国产九九九| 欧美私模裸体表演在线观看| 97在线国产视频| 欧美jizz18性欧美| 国产日产欧美精品一区二区三区| 国产精品我不卡| 99国产精品久久久久99打野战| 日本欧美韩国一区三区| 欧美一区深夜视频| 亚洲国产精一区二区三区性色| 亚洲天堂免费| 精品国内亚洲在观看18黄| 欧美一级片黄色| 99精品中文字幕在线不卡| 91精品国产色综合久久不卡电影| 麻豆一区二区三区视频| 自拍偷自拍亚洲精品被多人伦好爽 | 精品日韩美女| 丰满大乳国产精品| 国产毛片一区二区| 91在线视频成人| 91国在线视频| 精品系列免费在线观看| 国产精品手机播放| 夜夜躁日日躁狠狠久久av| 丝瓜av网站精品一区二区| 欧美在线视频一区二区| 午夜婷婷在线观看| 午夜亚洲一区| 国产精国产精品| 天堂网一区二区| 日韩**一区毛片| 国产精品视频yy9099| 中文字幕 自拍偷拍| 久久免费黄色| 国产精品国产福利国产秒拍| 国产情侣小视频| 蜜臀久久99精品久久久画质超高清| 国产精品福利久久久| 黄色大全在线观看| 日韩不卡手机在线v区| 国产精品一区二区久久国产| 91中文字幕在线播放| 国产真实乱对白精彩久久| 97视频资源在线观看| 亚洲xxxx天美| av在线不卡网| 日韩av大全| 日本不卡在线| 亚洲综合在线五月| 国产在线青青草| 成人午夜精品| 日韩一区二区三| www.88av| 久久视频在线| 欧美极品第一页| 中文字幕视频网| 青青草97国产精品免费观看 | 午夜日韩电影| 8x海外华人永久免费日韩内陆视频 | 中文字幕日韩三级片| 国产日产一区| 美女性感视频久久久| 免费毛片一区二区三区| 日韩国产精品久久久久久亚洲| 成人网在线免费观看| 天堂在线视频免费观看| 中国av一区二区三区| 在线观看av的网址| 黑人巨大精品欧美一区二区桃花岛| 欧美一a一片一级一片| 无套内谢丰满少妇中文字幕| 天天躁日日躁狠狠躁欧美| 伊人成人开心激情综合网| 在线免费日韩av| 久久久久国产精品一区二区| 亚洲自拍偷拍视频| 蜜桃视频在线观看视频| 亚洲精品国产第一综合99久久| 国产极品尤物在线| 国产视频网站一区二区三区| 亚洲毛茸茸少妇高潮呻吟| 成人免费精品动漫网站| 亚洲欧美网站| 国产精品国产三级国产专区53| 北岛玲一区二区三区| 天天综合网天天综合色| 欧美激情第一区| 精品久久网站| 97超级碰碰碰久久久| 国产白浆在线观看| 国产精品污www在线观看| 国产极品尤物在线| 欧美激情三级| 日韩在线精品视频| 亚洲国产成人精品女人久久| 成人美女视频在线观看| 伊人久久大香线蕉精品| 国产成人精品亚洲日本在线观看| 亚洲福利视频久久| 欧美被狂躁喷白浆精品| 久久爱www久久做| 视频一区亚洲| 电影一区二区三区| 日韩电影中文字幕一区| 国产精品99re| 国产成人激情av| 亚洲美女自拍偷拍| 久久人体av| 中文字幕日韩av| 一二三区免费视频| 久久精品视频一区二区| www黄色日本| 日韩美女精品| 91黑丝在线观看| 性生活视频软件| 亚洲综合色婷婷| 久久久无码人妻精品无码| 欧美成人午夜| 2019国产精品视频| 99自拍视频在线观看| 欧美一区二区人人喊爽| 私库av在线播放| 国产美女一区二区| 好吊色视频988gao在线观看| 97青娱国产盛宴精品视频| 欧美裸体男粗大视频在线观看| 国产巨乳在线观看| 亚洲免费高清视频在线| 色诱av手机版| 亚洲午夜一级| 黄色一区三区| 欧美黑人一区| 日韩中文有码在线视频| 国产精品无码白浆高潮| 伊人婷婷欧美激情| 怡红院一区二区| 在线亚洲激情| 亚洲a∨一区二区三区| 在线观看欧美| 欧美国产亚洲精品久久久8v| 少妇高潮一区二区三区69| 狠狠综合久久av一区二区小说| 亚洲av无码一区二区三区人| 喷水一区二区三区| 蜜桃视频成人在线观看| 国产精品视频3p| 日韩免费在线看| 在线免费观看的av网站| 6080亚洲精品一区二区| 日本五十路女优| 国产亚洲成aⅴ人片在线观看| 亚洲美女性囗交| 黄色工厂这里只有精品| 欧美系列一区| 成人在线日韩| 55夜色66夜色国产精品视频| 95在线视频| 欧美大肚乱孕交hd孕妇| 日本视频网站在线观看| 亚洲欧美另类图片小说| 黄色片视频免费观看| 美女国产一区二区| 亚洲国产精品成人天堂| 色喇叭免费久久综合| 国产精品视频入口| 六九午夜精品视频| 国内精品久久久久久久| 在线观看免费黄色| 精品动漫一区二区三区在线观看| 亚洲天堂五月天| 一区二区理论电影在线观看| 无码少妇精品一区二区免费动态| 国产iv一区二区三区| 欧美三级理论片| 亚洲精品九九| 免费在线观看污污视频| 嫩草影视亚洲| 福利视频一区二区三区| 成人国产精品| 26uuu日韩精品一区二区| 最新超碰在线| 日韩亚洲成人av在线| 天天干天天草天天射| 欧美一区二区三区在| 国产性生活视频| 亚洲aaa精品| 欧美成人综合色| 中文字幕av一区二区三区免费看 | 久久久精品视频国产| 视频在线观看一区二区三区| 日本a在线免费观看| 艳女tv在线观看国产一区| 日本不卡二区| 婷婷成人综合| 国产麻豆乱码精品一区二区三区 | 亚洲美女性视频| 亚洲AV午夜精品| 欧美一区二区在线看| 日韩国产成人在线| 欧美性猛交xxxx| 国产情侣在线视频| 亚洲一二三四区| 亚洲色婷婷一区二区三区| 亚洲欧洲另类国产综合| 国产精品情侣呻吟对白视频| 久久久夜色精品亚洲| 日韩免费高清一区二区| 高清免费成人av| 手机看片国产精品| 国产美女精品在线| 一级黄色在线播放| 美女视频网站黄色亚洲| 九色91popny| 免费视频最近日韩| 天堂在线资源视频| 麻豆一区二区三区| 一区二区三区 欧美| 免费国产亚洲视频| 91制片厂毛片| 久久国产精品色婷婷| 中文字幕亚洲乱码| 黄色日韩网站视频| 亚洲一区二区中文字幕在线观看| 精品一区二区久久久| 国产aⅴ爽av久久久久| 六月丁香婷婷色狠狠久久| 午夜视频在线网站| 国产精品一区在线| 久久久久亚洲AV成人网人人小说| 成人午夜又粗又硬又大| 国产不卡一二三| 久久精品夜夜夜夜久久| 国产在线免费av| 亚洲欧美日韩国产手机在线 | 欧美精品久久久久久久久老牛影院 | 国产免费嫩草影院| 亚洲日本中文字幕区| 黄色一级大片在线免费观看| 亚洲一卡二卡三卡四卡| 欧美啪啪小视频| 欧美日韩国产精选| 国产浮力第一页| 亚洲激情在线观看| 国产一二三区在线视频| 久久激情视频免费观看| 欧美24videosex性欧美| 日本成人免费在线| 日本亚洲欧洲无免费码在线| 不卡一区二区三区四区五区| 琪琪久久久久日韩精品| 午夜精品亚洲一区二区三区嫩草| 99久久视频| 日韩中文字幕在线视频观看 | 亚洲精品乱码久久久久久9色| 成人手机在线视频| 国产精品久久免费观看| 一区二区三区毛片| 日韩精品成人免费观看视频| 欧美一级日韩免费不卡| 无套内谢的新婚少妇国语播放| 在线中文字幕日韩| 97天天综合网| 国产日韩在线观看av| 久久精品论坛| 青少年xxxxx性开放hg| 亚洲一区二区三区高清| 亚洲综合123| 久久精品视频免费| 九九九在线视频| 色婷婷国产精品综合在线观看| 精品黑人一区二区三区在线观看| 亚洲欧美另类在线观看| 四虎av在线| 国产精品欧美日韩久久| 久久中文资源| 女同性恋一区二区| 青青草97国产精品免费观看| 污污污www精品国产网站| |精品福利一区二区三区| www欧美在线| 欧美大片拔萝卜| 日本中文字幕在线视频| 欧美在线一区二区视频| 日韩成人在线观看视频| 艳色歌舞团一区二区三区| 国产女优一区| 国产精品久久久久久久无码| 亚洲精品国产精品乱码不99 | 久久久久免费看| 欧美日本在线视频| 伦理片一区二区三区| 性亚洲最疯狂xxxx高清| 精品视频在线播放一区二区三区 | 欧美精品一区男女天堂| 国产区在线观看| 国产精品专区h在线观看| 你微笑时很美电视剧整集高清不卡| 国产成人一区二区三区别| 激情久久久久久久久久久久久久久久| 最新中文字幕av| 欧美亚洲尤物久久| 免费在线黄色影片| 日韩av成人在线| 日韩美女毛片| 黄色免费观看视频网站| 成人黄色在线网站| 久久在线视频精品| 日韩一区二区中文字幕| 国产在线观看91| 91免费在线视频| 一区二区国产在线| 日本特黄在线观看| 亚洲欧美日韩中文字幕一区二区三区| 中文字幕 日韩有码| 日韩中文字幕网| 青青在线精品| 手机看片日韩国产| 国产精品自产自拍| 美女视频黄免费| 欧美大片拔萝卜| 欧美aaaaa性bbbbb小妇| 韩国成人一区| 亚洲欧美不卡| 中文字幕第20页| 欧美亚洲综合在线| 国产最新在线| 动漫美女被爆操久久久| 亚洲精品资源| 免费黄色在线视频| 日本高清免费不卡视频| 香港伦理在线| 18成人在线| 在线亚洲免费| 国产高潮呻吟久久| 欧美高清视频一二三区| 在线视频国产区| 国产乱码精品一区二区三区卡 | 欧美日韩国产黄| 九色蝌蚪在线| 成人网中文字幕| 亚洲全部视频| 五月天精品视频| 91超碰这里只有精品国产| 韩国日本一区| 欧美日韩在线观看一区| 久久精品国产999大香线蕉| 欧美日韩免费一区二区| 国产婷婷成人久久av免费高清| 亚洲电影有码| av一区二区三区免费观看| ww亚洲ww在线观看国产| 一二三区中文字幕| 性色av一区二区三区| 日韩大片在线观看| 久久久久国产免费| 91久久精品日日躁夜夜躁欧美| 黄网站app在线观看| 精品国产乱码久久久久久蜜柚 | 91国产成人在线| h片在线播放| 鲁鲁视频www一区二区| 国产一区二区三区美女| 日韩欧美成人一区二区三区| 日韩在线视频国产| 老牛国内精品亚洲成av人片| 视频二区在线播放| 亚洲国产日韩综合久久精品| 成年在线观看免费人视频| 国产精品成人一区二区三区| 麻豆精品在线视频| 成人免费区一区二区三区| 久久综合久久美利坚合众国| 综合色就爱涩涩涩综合婷婷| 国产伦理在线观看| 欧美少妇bbb| 日韩大片免费观看|