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

深入淺出MySQL優(yōu)先隊(duì)列(你一定會(huì)踩到的order by limit 問(wèn)題)

數(shù)據(jù)庫(kù) MySQL
其中涉及 數(shù)據(jù)結(jié)構(gòu),PageHelper,MySQL 文檔,相關(guān)參考資料羅列在文末,如果有時(shí)間能順著文章思路親自讀一遍參考文檔,相信會(huì)有更深的收獲。

 0.先拋問(wèn)題

假設(shè)字段category無(wú)索引且有重復(fù)值,order by category 和 limit 組合使用的結(jié)果會(huì)和預(yù)期不符。

問(wèn)題復(fù)現(xiàn):

表結(jié)構(gòu)(就是兩個(gè)字段) 

  1. CREATE TABLE `ratings` (  
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,  
  3.   `category` int(11) DEFAULT NULL,  
  4.   PRIMARY KEY (`id`)  
  5. ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

對(duì)所有數(shù)據(jù)按category字段排序: select * from ratings order by category;

id category
1 1
5 1
10 1
3 2
4 2
6 2
9 2
2 3
7 3
8 3

當(dāng)我們想分頁(yè)展示前5條時(shí)使用select * from ratings order by category limit 5;

期望得到的ID順序是1 5 10 3 4。

但實(shí)際結(jié)果如下:

id category
1 1
10 1
5 1
3 2
4 2

怎么肥似?MySQL 出 Bug 了?

可能有同學(xué)遇到過(guò)這個(gè)問(wèn)題,百度或谷歌一下解決了,你有沒(méi)有想過(guò),你查到的辦法是最優(yōu)解嗎?別人是怎么得出這個(gè)辦法的?MySQL 為什么會(huì)這樣做,跟版本有關(guān)嗎?

先拋結(jié)論:

  1.  最優(yōu)解是后面再加個(gè)列值唯一的排序字段,如:order by category,id;
  2.  MySQL 為什么這樣做?答案是為了快!(MySQL 5.6及其之后才有此優(yōu)化)
  3.  次優(yōu)解是對(duì)order by后面的category 加索引(為什么是次優(yōu)解?看完本文你將會(huì)有答案);

下面課代表將還原一下這 3 條結(jié)論的產(chǎn)出過(guò)程。

1. 最優(yōu)解

MySQL 文檔 8.2.1.19 LIMIT Query Optimization 中對(duì)此場(chǎng)景有如下描述:

If multiple rows have identical values in the ORDER BY columns, the server is free to return those rows in any order, and may do so differently depending on the overall execution plan. In other words, the sort order of those rows is nondeterministic with respect to the nonordered columns.

One factor that affects the execution plan is LIMIT, so an ORDER BY query with and without LIMIT may return rows in different orders.

總結(jié)來(lái)說(shuō)就是:

當(dāng) ORDER BY 列的字段值存在重復(fù),那么這條 ORDER BY 語(yǔ)句返回的數(shù)據(jù)順序會(huì)因?yàn)長(zhǎng)IMIT的存在而變得不一樣

這是 MySQL 默認(rèn)對(duì)該場(chǎng)景做的優(yōu)化,如果你需要保證加不加 LIMIT 順序都要一致,官方也給出了辦法:

If it is important to ensure the same row order with and without LIMIT, include additional columns in the ORDER BY clause to make the order deterministic.

就是在ORDER BY 后面再多加一個(gè)排序字段(比如 ID 字段)。

以上描述最早出現(xiàn)在MySQL 5.6文檔中,從這個(gè)版本開(kāi)始,引入了這個(gè)針對(duì)ORDER BY LIMIT 的優(yōu)化。

好了, 針對(duì)文中的場(chǎng)景,我們只需要select * from ratings order by category,id;即可解決。

那么問(wèn)題來(lái)了,MySQL 為什么要做這么一個(gè)看似是 Bug 的優(yōu)化?

2.MySQL 的 ORDER BY 邏輯

顧名思義,ORDER BY 就是排序。

執(zhí)行一下explain select * from ratings order by category limit 5; 

  1. *************************** 1. row ***************************  
  2.            id: 1  
  3.   select_type: SIMPLE  
  4.         table: ratings  
  5.    partitions: NULL  
  6.          type: ALL  
  7. possible_keys: NULL  
  8.           key: NULL  
  9.       key_len: NULL  
  10.           ref: NULL  
  11.          rows: 10  
  12.      filtered: 100.00  
  13.         Extra: Using filesort  
  14. 1 row in set, 1 warning (0.00 sec) 

可以看到 Extra: Using filesort 表示需要排序。

正常情況下, MySQL 會(huì)有內(nèi)存排序和外部排序兩種:

  •  如果待排序的數(shù)據(jù)量小于sort buffer size,排序就在內(nèi)存中完成(快速排序);
  •  如果待排序的數(shù)據(jù)量大于sort buffer size,就使用臨時(shí)文件進(jìn)行外部排序(歸并排序);

很明顯,這兩種排序都是對(duì)所有結(jié)果全部排序,講道理,不管有沒(méi)有LIMIT,都是從排完序的結(jié)果中按順序取需要的條數(shù),有沒(méi)有LIMIT是不會(huì)影響返回的結(jié)果順序的。

但是,MySQL 5.6 版本針對(duì) ORDER BY LIMIT做了個(gè)小優(yōu)化(排序字段無(wú)索引,且列值不唯一時(shí)):優(yōu)化器在遇到 ORDER BY LIMIT語(yǔ)句的時(shí)候,使用了priority queue。

filesort.cc 中有如下偽代碼描述該優(yōu)化: 

  1. while (get_next_sortkey())  
  2.    {  
  3.      if (using priority queue)  
  4.        push sort key into queue  
  5.      else  
  6.      {  
  7.        try to put sort key into buffer;  
  8.        if (no free space in sort buffer)  
  9.        {  
  10.          do {  
  11.            allocate new, larger buffer;  
  12.            retry putting sort key into buffer;  
  13.          } until (record fits or no space for new buffer)  
  14.          if (no space for new buffer)  
  15.          {  
  16.            sort record pointers (all buffers);  
  17.            dump sorted sequence to 'tempfile';  
  18.            dump Merge_chunk describing sequence location into 'chunk_file';  
  19.          }  
  20.        }  
  21.        if (key was packed)  
  22.          tell sort buffer the actual number of bytes used;  
  23.      }  
  24.    }  
  25.    if (buffer has some elements && dumped at least once)  
  26.      sort-dump-dump as above;  
  27.    else  
  28.      don't sort, leave sort buffer to be sorted by caller. 

并在 WL#1393: Optimizing filesort with small limit 中闡述了該優(yōu)化邏輯: 

  1. Many web customers have to do  
  2. "SELECT ... ORDER BY non_index_column LIMIT X",  
  3. When X *  is smaller than sort_buff_size we can use  
  4. the following algoritm to speed up the sort:  
  5. - Create a queue to hold 'limit' keys.  
  6. - Scan through the table and store the first (last if DESC) keys in the queue  
  7. - Return values from queue  
  8. This is much faster than the current algoritm that works as: 

該 WorkLog 中記錄了優(yōu)化后的效果:10 to 20 times faster than a quicksort(感興趣的同學(xué)可以去閱讀原文)。

所以,就是為了快!

MySQL 認(rèn)為這種場(chǎng)景就是求 TOP N 的問(wèn)題,使用 priority queue 就能解決。

3.priority queue(優(yōu)先級(jí)隊(duì)列)

priority queue 其實(shí)就是堆,Java 中有java.util.PriorityQueue類,其本質(zhì)就是 堆 這種數(shù)據(jù)結(jié)構(gòu)。

簡(jiǎn)單解釋一下什么是堆:

堆是一個(gè)完全二叉樹(shù);

堆中每一個(gè)節(jié)點(diǎn)的值都必須大于等于(大頂堆)或小于等于(小頂堆)其子樹(shù)中每個(gè)節(jié)點(diǎn)的值。

如果 MySQL 使用歸并或快排,需要把所有數(shù)據(jù)都排好序,再取LIMIT 的前幾條,剩余已排序的數(shù)據(jù)就白白浪費(fèi)了。

而采用 priority queue 可以根據(jù) LIMIT的條數(shù)維護(hù)一個(gè)堆,只需要把所有數(shù)據(jù)在這個(gè)堆里過(guò)一遍就能得到結(jié)果。

使用如下語(yǔ)句可以驗(yàn)證 MySQL 使用了 priority queue: 

  1. SET optimizer_trace='enabled=on' 
  2. select * from ratings order by category limit 5;  
  3. SELECT * FROM `information_schema`.`OPTIMIZER_TRACE`\G;  
  1. "filesort_priority_queue_optimization": {  
  2.              "limit": 5,  
  3.              "chosen": true  
  4.            }, 

可以看到 filesort_priority_queue_optimization.chosen = true

下面用流程圖還原一下 priority queue 的執(zhí)行邏輯(以LIMIT 5為例):

友情提示:圖中的小頂堆以 category 值的大小排序

    1.  取前五條數(shù)據(jù)構(gòu)成一個(gè)小頂堆:

    1.  取下一行數(shù)據(jù)(6,2),發(fā)現(xiàn) 2 小于當(dāng)前堆中最大的category 3,于是把(2,3)從堆中刪掉,把(6,2) 入堆:

    1.  重復(fù)步驟 2,直至符合查詢條件的數(shù)據(jù)都經(jīng)歷過(guò)比較入堆,最終堆中數(shù)據(jù)如圖:

以上就是通過(guò) priority queue 找到 最小的 5 行 category 數(shù)據(jù)的執(zhí)行過(guò)程。

最后我們將其出堆即可得到結(jié)果,每次出堆最小元素后將最后一個(gè)元素放入堆頂,按照小頂堆重新堆化,過(guò)程如圖:

可以看到,這個(gè)結(jié)果和select * from ratings order by category limit 5;的輸出一致

4.加索引為什么是次優(yōu)解

顯然,按照ORDER BY 的邏輯,直接對(duì)排序字段加索引也可以省去內(nèi)存排序步驟,從而解決這個(gè)問(wèn)題。

但索引也不是銀彈,多出來(lái)的category索引會(huì)增加表的維護(hù)成本,如果沒(méi)有明顯的業(yè)務(wù)需要,單純?yōu)榱死@過(guò)這個(gè)priority queue的優(yōu)化而加索引,課代表認(rèn)為有點(diǎn)得不償失。

尤其是當(dāng)表數(shù)據(jù)量非常大的時(shí)候,索引的體量會(huì)很可觀。而且,針對(duì)文中場(chǎng)景,category作為分類字段,重復(fù)率會(huì)比較高,即使有按分類查詢的業(yè)務(wù) SQL ,MySQL 也不一定會(huì)選取這條索引。

綜上,針對(duì)本場(chǎng)景,個(gè)人認(rèn)為order by category,id才是該問(wèn)題的最優(yōu)解。

PS:會(huì)不會(huì)有人問(wèn):關(guān)我鳥(niǎo)事,我從沒(méi)寫過(guò)帶 LIMIT 的 SQL 啊!

難道你寫的 CRUD 功能都不帶分頁(yè)的嗎?PageHelper 源碼去了解一下?

5. 總結(jié)

本文案例是課代表上線過(guò)程中遭遇到的實(shí)際問(wèn)題,咨詢了下周圍同學(xué),有好幾個(gè)都遇到過(guò)此問(wèn)題,網(wǎng)上文章大多淺入淺出,讀完有隔靴搔癢之感,無(wú)法解答心中疑惑。遂整理此文。

其中涉及 數(shù)據(jù)結(jié)構(gòu),PageHelper,MySQL 文檔,相關(guān)參考資料羅列在文末,如果有時(shí)間能順著文章思路親自讀一遍參考文檔,相信會(huì)有更深的收獲。 

 

責(zé)任編輯:龐桂玉 來(lái)源: segmentfault
相關(guān)推薦

2021-07-19 11:54:15

MySQL優(yōu)先隊(duì)列

2023-02-14 08:00:00

MySQL索引查詢

2022-10-08 08:09:13

MGRGreatSQL事務(wù)

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2016-10-14 13:53:05

JavascriptDOMWeb

2019-01-16 17:05:02

Python亂碼網(wǎng)絡(luò)

2019-08-22 10:57:42

MySQL數(shù)據(jù)索引

2009-03-16 13:44:29

雙向復(fù)制實(shí)例MySQL

2019-11-11 14:51:19

Java數(shù)據(jù)結(jié)構(gòu)Properties

2009-11-30 16:46:29

學(xué)習(xí)Linux

2022-12-02 09:13:28

SeataAT模式

2021-07-20 15:20:02

FlatBuffers阿里云Java

2017-07-02 18:04:53

塊加密算法AES算法

2012-05-21 10:06:26

FrameworkCocoa

2019-01-07 15:29:07

HadoopYarn架構(gòu)調(diào)度器

2022-09-26 09:01:15

語(yǔ)言數(shù)據(jù)JavaScript

2023-11-03 10:33:26

2018-03-15 09:13:43

MySQL存儲(chǔ)引擎

2023-03-20 09:48:23

ReactJSX
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲电影免费观看高清完整版在线观看 | 日韩欧美国产不卡| 国产精品一线二线三线| 欧洲一区av| 开心九九激情九九欧美日韩精美视频电影 | xxxx黄色片| 欧美男男gaygay1069| 亚洲国产精品一区二区www | 亚洲高清无码久久| 欧美日韩免费观看视频| 一区二区三区四区精品在线视频| 久久久久久精| 国产极品999| 麻豆精品一区二区三区| 久久久噜噜噜久久| 波多野结衣喷潮| 杨幂一区二区三区免费看视频| 在线成人免费观看| 熟妇人妻va精品中文字幕| 最新av在线播放| 中文子幕无线码一区tr| 国产伦精品一区二区三区视频黑人| 综合久久中文字幕| 男人的天堂亚洲| 欧美激情一区二区三区成人| 2017亚洲天堂| 国产日韩欧美一区二区三区| 精品国产91洋老外米糕| 一区二区三区人妻| 青青在线精品| 在线观看亚洲成人| 欧美日韩在线视频一区二区三区| 日本动漫理论片在线观看网站 | 国产午夜精品理论片| 国产欧美日韩影院| 亚洲片在线观看| 免费在线观看成年人视频| 在线视频亚洲欧美中文| 911精品国产一区二区在线| 三级a在线观看| 人人视频精品| 一本色道a无线码一区v| 国产成人无码精品久久久性色| 三级网站视频在在线播放| 自拍偷在线精品自拍偷无码专区| 手机成人在线| sese一区| 中文字幕欧美国产| 亚洲精品乱码视频| av电影在线观看| 国产欧美一二三区| 日韩精品久久久免费观看| 天堂网www中文在线| 成人短视频下载| 国内成+人亚洲| 天堂av中文字幕| 99麻豆久久久国产精品免费优播| 国产精品一区二区三区在线| 午夜精品久久久久久久99热黄桃 | 欧美精品在欧美一区二区少妇| 超碰在线97免费| 亚洲aⅴ网站| 91精品国产综合久久久久久漫画 | 欧美区一区二区| 日韩视频免费观看高清完整版 | 亚洲国产一区二区在线播放| www.国产在线视频| 性欧美freesex顶级少妇| 色诱视频网站一区| 一级黄色特级片| 久久久久久久久久久久电影| 精品日韩欧美一区二区| 国产伦精品一区二区免费| 天堂网av成人| 永久免费精品影视网站| 日本高清不卡免费| 欧美色综合网| 欧美在线视频一区二区| 亚洲av无码乱码国产精品fc2| 蜜臀av性久久久久蜜臀aⅴ流畅| 91精品国产自产在线老师啪| 精品乱子伦一区二区| 99精品久久久久久| 亚洲黄色成人久久久| 四季久久免费一区二区三区四区| 性做久久久久久免费观看| 国产女女做受ⅹxx高潮| 亚洲一区av| 亚洲国产福利在线| 黄色一级片一级片| 国内精品久久久久久久影视蜜臀| 国产91精品不卡视频| 亚洲视频一区在线播放| 高清不卡在线观看| 日韩国产一区久久| 日本动漫理论片在线观看网站 | 精品国产av 无码一区二区三区| 国产成人免费视频网站高清观看视频 | 精品日产乱码久久久久久仙踪林| 夜夜嗨av色一区二区不卡| 婷婷久久综合网| 性欧美长视频| 99视频国产精品免费观看| 日韩av成人| 亚洲欧美日韩中文字幕一区二区三区 | 久草在线在线精品观看| 激情小说综合网| 国产原创精品视频| 色综合天天综合网天天狠天天 | www.com毛片| 亚洲黑人在线| 亚洲少妇激情视频| 日韩精品在线免费看| 国产一区久久久| 日本电影一区二区三区| 国产蜜臀一区二区打屁股调教| 欧美私人免费视频| 色欲av无码一区二区三区| 欧美在线三区| 国产日韩在线观看av| 日韩美女一级视频| 亚洲线精品一区二区三区| 天堂在线一区二区三区| 欧美人妖在线| 91国自产精品中文字幕亚洲| 性做久久久久久久久久| 综合欧美一区二区三区| www.99av.com| 九一亚洲精品| 欧美一级高清免费播放| 欧美一级在线免费观看| 一级中文字幕一区二区| 色91精品久久久久久久久| 色综合综合色| 欧美一区三区三区高中清蜜桃| 亚洲国产精彩视频| 一区二区三区四区在线播放| 不卡的在线视频| 欧美激情理论| 国产精品视频精品| jizz在线观看中文| 欧美综合视频在线观看| www.av天天| 翔田千里一区二区| 欧美日韩中文国产一区发布| 中文字幕资源网在线观看免费| 亚洲国产中文字幕久久网| 精品久久免费视频| 91小视频在线免费看| 九九九九免费视频| 最新亚洲精品| 国产99久久精品一区二区| 天堂网www中文在线| 色老汉一区二区三区| jizz中文字幕| 激情综合色丁香一区二区| 日韩视频在线免费播放| 国产精品一区二区美女视频免费看| 久久精品国产亚洲一区二区 | 校园春色亚洲色图| 亚洲视频日韩精品| 91精东传媒理伦片在线观看| 成人欧美一区二区三区1314| 999热精品视频| 欧美日韩国产在线一区| 国产精品国产亚洲精品看不卡15| а√天堂资源官网在线资源| 亚洲欧美日韩在线一区| 精品国产青草久久久久96| 中文字幕一区二区在线播放| 亚洲一二区在线观看| 国产精品二区影院| 久久免费视频1| 开心久久婷婷综合中文字幕| 久久99热精品这里久久精品| 日韩一区二区三区不卡| 色综合天天综合色综合av | 潘金莲一级淫片aaaaaaa| 极品中文字幕一区| 欧美日韩综合另类| 激情久久免费视频| 97视频在线免费观看| 国产精品久久一区二区三区不卡| 在线观看91av| 可以在线观看av的网站| 中文字幕在线观看一区| 色哟哟无码精品一区二区三区| 久久久综合网| 在线观看av的网址| 亚洲伊人春色| 91精品天堂| 日韩不卡免费高清视频| 久久人人爽人人爽爽久久| 天堂中文在线官网| 欧美日韩国产成人在线免费| 国产精品第二十页| 国产精品每日更新在线播放网址| 激情小说欧美色图| 青青草成人在线观看| 青青青在线观看视频| 国产a久久精品一区二区三区| 成人免费观看a| 亚洲黄色中文字幕| 欧美国产极速在线| avtt亚洲| 亚洲欧美在线第一页| 99在线小视频| 欧亚洲嫩模精品一区三区| 久久久精品91| 亚洲欧美一区二区视频| 久久久久久亚洲中文字幕无码| 国产老肥熟一区二区三区| 青青草精品视频在线观看| 在线日韩欧美| 免费在线精品视频| 欧美日韩伦理| 久久精品丝袜高跟鞋| 91精品国产乱码久久久竹菊| 国产一区深夜福利| 日本欧美一区| 欧美一级电影免费在线观看| av中文字幕电影在线看| 欧美成人剧情片在线观看| av小片在线| 亚洲人成欧美中文字幕| 污视频网站免费观看| 精品奇米国产一区二区三区| 国产精品欧美综合亚洲| 在线视频综合导航| 国内自拍视频在线播放| 亚洲不卡在线观看| 九九视频免费在线观看| 亚洲人妖av一区二区| 美女网站视频色| 欧美激情中文不卡| 中国女人特级毛片| 久久亚洲私人国产精品va媚药| 中文字幕a在线观看| 不卡的av电影在线观看| 男女性杂交内射妇女bbwxz| 粉嫩一区二区三区在线看| 男插女视频网站| 国产老女人精品毛片久久| 亚洲一区二区偷拍| 国产尤物一区二区在线| 五月天婷婷在线观看视频| 免费高清视频精品| 天天干天天av| 国产一区二区三区日韩| 女人扒开双腿让男人捅 | 欧美日韩久久不卡| 伊人成人在线观看| 欧美人与z0zoxxxx视频| 国产精品久久久久久久久毛片 | 亚洲av成人精品毛片| 亚洲精品久久久久中文字幕欢迎你 | 国产一区二区三区视频在线| 成人午夜在线观看| 1769国产精品视频| 久久福利电影| 宅男在线一区| 亚洲欧洲免费无码| 在线精品视频在线观看高清| 最新av网址在线观看| 伊人成人在线视频| 任你操这里只有精品| 日本aⅴ亚洲精品中文乱码| 怡红院亚洲色图| 国产精品一区二区你懂的| 亚洲一区二区在线免费| 国产偷国产偷精品高清尤物| 99自拍偷拍视频| 一区二区三区四区国产精品| 日本午夜视频在线观看| 欧美影片第一页| 国产成人毛毛毛片| 日韩成人久久久| 91在线观看| 欧美二区乱c黑人| 韩国成人漫画| 91视频国产精品| 老司机成人在线| 亚洲区一区二区三区| 好看的日韩av电影| 日韩毛片在线免费看| 国产在线精品免费| 国产乱了高清露脸对白| 亚洲国产精品二十页| 国产性一乱一性一伧一色| 色伊人久久综合中文字幕| 国产精品久久免费| 日韩成人在线观看| 国产高清一区二区三区视频 | 欧美特黄不卡| 久久这里精品国产99丫e6| 色琪琪久久se色| 欧美在线一区视频| 久久99精品久久久久| 亚洲久久久久久| 亚洲猫色日本管| 日本a级c片免费看三区| 精品国产区一区| 欧美18hd| 国产成人精品一区二区| 国产精品超碰| eeuss中文| 日韩成人伦理电影在线观看| 91九色蝌蚪porny| 亚洲视频免费观看| 老熟妇仑乱一区二区av| 精品美女被调教视频大全网站| www.亚洲资源| 欧美最顶级丰满的aⅴ艳星| 视频一区国产| 在线成人性视频| 日韩黄色在线观看| 亚洲精品在线视频免费观看| 亚洲免费在线观看| 一区二区三区在线免费观看视频| 日韩精品在线观看视频| 欧洲在线视频| 18成人免费观看网站下载| 久久视频在线| 精品久久久久久中文字幕2017| 成人a免费在线看| 亚洲国产美女视频| 欧美日韩国产综合视频在线观看| 欧美日韩福利在线| 天天操天天干天天插| 精品一区二区三| 久久99久久99精品免观看粉嫩| 在线人成日本视频| 国产精品www色诱视频| www.蜜桃av.com| 亚洲色图偷窥自拍| 中文字幕人成乱码在线观看| 精品一区二区三区视频日产| 亚洲日本视频| 伊人网综合视频| 婷婷一区二区三区| 性猛交xxxx| 欧美专区在线观看| 九九久久婷婷| 国产真人无码作爱视频免费| 久久久午夜精品理论片中文字幕| 国产99久久久| 亚洲人成啪啪网站| 123成人网| 影音先锋欧美资源| 国内外成人在线视频| avove在线播放| 欧美成人bangbros| av女在线播放| 你懂的视频在线一区二区| 丝袜美腿成人在线| 亚洲图片第一页| 欧美丰满高潮xxxx喷水动漫| 中文字幕在线观看播放| 国产伦精品一区二区三区高清版 | 国产日韩欧美精品在线观看| 不卡av在线免费观看| 国产精品xxxx喷水欧美| 亚洲男人的天堂在线| 天天综合网天天| 宅男噜噜99国产精品观看免费| 极品销魂美女一区二区三区| 久久久国产成人| 亚洲欧美中文日韩在线| 日韩一区中文| 成人短视频在线观看免费| 91在线视频免费91| 中日韩av在线| 欧美另类在线播放| 香蕉久久精品日日躁夜夜躁| 国产成人永久免费视频| h片在线播放| 亚洲欧洲日本专区| 男人天堂久久| 人妻无码一区二区三区四区| 94色蜜桃网一区二区三区| 男人天堂视频在线| 久久夜精品va视频免费观看| 成人午夜大片| 青青草精品视频在线观看| 尤物av一区二区| 手机福利在线| 成人h视频在线| 亚洲日本激情| 国产精品夜夜夜爽阿娇| 亚洲福利精品在线| 欧美jizz18| 国产伦精品一区二区三区四区视频_| 国产日韩欧美不卡| 亚洲经典一区二区| 国产精品va在线| 一区二区亚洲精品| 精品女人久久久| 日韩精品极品在线观看| 精品一区二区三区四区五区| 欧美日韩在线中文|