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

面試就面試,問我原理干嘛,Order By

數據庫 MySQL
這篇文章,我們就來解釋下,涉及 order by 的語句具體是怎么執行的,以及有什么參數會影響執行的行為。

本文轉載自微信公眾號「飛天小牛肉」,作者小牛肉。轉載本文請聯系飛天小牛肉公眾號。

假設有這么一張用戶表 user:

  • id int(11):主鍵
  • username varchar(16):用戶名
  • age int(11):年齡
  • city varchar(16):城市

假設有這么一個需求:查詢出城市是 “南京” 的所有用戶名,并且按照用戶名進行排序,返回前 1000 個人的姓名、年齡。

眾所周知,排序使用的關鍵字是 order by,不難寫出這樣的 SQL 語句:

select city, username, age from user where city = '南京' order by username limit 1000;

這篇文章,我們就來解釋下,涉及 order by 的語句具體是怎么執行的,以及有什么參數會影響執行的行為

全字段排序

為避免全表掃描,我們在查詢條件的 city 字段上面建立索引。然后用 explain 命令來看看這個語句的執行情況:

偷個懶,因為我其實一條數據也沒插入(狗頭保命),所以大伙兒在上圖中看見的 explain 分析出來的這條 SQL 的影響行數 rows 是 1

Extra 這個字段中的 Using filesort 表示的就是需要排序,MySQL 會給每個線程分配一塊內存用于排序,稱為 sort_buffer。

通常情況下,這個語句執行流程如下所示 :

1)初始化 sort_buffer,放入 city、username、age 這三個字段;

2)從索引 city 找到第一個滿足 city='南京' 條件的主鍵 id

3)到主鍵 id 的索引樹上查找到對應的整行數據(回表查詢),然后取出 city、username、age 三個字段的值,存入 sort_buffer 中

4)從索引 city 取下一個記錄的主鍵 id

5)重復步驟 3、4 直到 city 的值不滿足查詢條件為止

6)對 sort_buffer 中的數據按照字段 username 做快速排序

按照字段 username 做快速排序這個動作,可能在內存中完成,也可能需要使用外部排序,這取決于排序所需的內存和 sort_buffer 的大小,由參數 sort_buffer_size 決定。

如果要排序的數據量小于 sort_buffer_size,排序就在內存中完成。但如果排序數據量太大,內存放不下,則就需要利用磁盤臨時文件來輔助排序。

解釋下這里使用磁盤臨時文件來進行輔助排序的含義,外部排序常用的排序算法是多路歸并排序算法,具體步驟如下:

  • 到主鍵 id 索引樹上查找到對應的整行數據后,取 city、username、age 三個字段的值,存入 sort_buffer 中,能存多少是多少,當 sort_buffer 快要滿時,就對 sort_buffer 中的數據進行排序,排完后,把數據臨時放到磁盤的一個小文件中,然后清空 sort_buffer(這樣的話,一個很大的數據,就會被分成若干個臨時磁盤文件)
  • 繼續回到主鍵 id 索引樹取數據,重復上一步,直到取出所有滿足條件的數據
  • 最后,歸并已經有序的若干個臨時磁盤文件,形成一個完整的有序大文件

7)按照排序結果取前 1000 行返回給客戶端

可以看出,整個排序過程,我們要查詢的 city、username、age 全都參與了,所以,暫且把這個排序過程,稱為全字段排序

整條語句的執行流程的示意圖如下所示:

針對上面利用磁盤臨時文件進行輔助排序的過程,不知道大家會不會有個很自然的想法:sort_buffer 內存放不下,需要用到臨時磁盤文件,磁盤文件越多,排序效率顯然就會越低下。那為什么還要把排序不相關的字段 city、username 放到 sort_buffer 中呢?只存放排序相關的 age 字段,這樣劃分的磁盤文件不就相對變少了嘛~

這就是 rowid 排序 ??

rowid 排序

rowid 排序,聽名字大概就能理解,就是,只把需要用于排序的字段和對應的主鍵 id,放到 sort_buffer 中。

那怎么確定走的是全字段排序還是 rowid 排序呢?

實際上有個參數控制的。這個參數就是 max_length_for_sort_data,是 MySQL 中專門控制用于排序的行數據的長度的一個參數。它的意思是,如果單行的長度超過這個值,MySQL 就認為單行太大(那么數據量肯定就越大,sort_buffer 可能不夠用),不能再像之前那樣把所有 select 的字段都存進 sort_buffer 了,要換一個算法,只存排序相關的字段

show variables like 'max_length_for_sort_data';

可以看到,max_length_for_sort_data 的默認值是 1024

可以通過下面這行命令進行修改

SET max_length_for_sort_data = 16;

表中我們定義的這三個字段 city、username、age 的總長度是 36,我把 max_length_for_sort_data 設置為 16,顯然,單行的長度已經超過這個值了,排序算法應該由全字段排序轉成了 rowid 排序。

整個執行流程就變成如下所示的樣子:

1)初始化 sort_buffer,放入兩個字段,即 username 和主鍵 id

2)從 city 索引中找到第一個滿足 city='南京' 條件的主鍵 id

3)到主鍵 id 的索引樹上查找到對應的整行數據(回表查詢),取出 username 和 id 這兩個字段,存入 sort_buffer 中

4)從 city 索引中取下一個記錄的主鍵 id;重復步驟 3、4 直到不滿足 city='南京' 的條件為止

5)對 sort_buffer 中的數據按照字段 username 進行排序

6)遍歷排序結果,取前 1000 行,并按照 id 的值回到主鍵 id 的索引樹中取出 city、username 和 age 三個字段返回給客戶端

可以看到,新的 rowid 算法放入 sort_buffer 的字段,只有要排序的列(即 username 字段)和主鍵 id。但有利有弊,存放在 sort_buffer 中的數據因為少了 city 和 age 字段的值,所以不能直接返回給客戶端了,需要再進行一次回表查詢。

這個執行流程的示意圖如下:

從上面我們可以看出來,事實上,如果內存足夠大的話,MySQL 優先選擇的仍然是全字段排序,把需要的字段都放到 sort_buffer 中,這樣排序后就會直接從內存里面返回查詢結果了,不用再回表查詢,減少磁盤訪問。

回表的話應該首先去緩沖池 Buffer Pool 中找到對應版本的數據,若找不到,則需要進行磁盤讀(索引文件是磁盤文件),理論上不會觸發磁盤讀,因為取 id 的時候已經從磁盤讀取了一次放到了緩沖池 Buffer Pool 中了,但不排除,第一次取完數據放到 sort buffer 后緩存中的數據頁被淘汰了,可能會觸發磁盤讀

order by 優化

很顯然,如果不排序就能得到正確的結果,那對系統的消耗會小很多,語句的執行時間也會變得更短。

那么,是不是所有的 order by 都需要排序操作呢?

并不是!

從上面分析的執行過程我們可以看到,MySQL 之所以需要 sort_buffer,并且在 sort_buffer 上做排序操作,其原因是原來的數據都是無序的。

回顧下我們的需求:查詢出 city 是 “南京” 的所有 username,并且按照 username 進行排序,返回前 1000 個人的姓名、年齡。

那,如果能夠保證從 city 這個索引上取出來的數據行,已經天然就是按照 username 進行遞增排序的話,不就不用再排序了嗎

所以,我們可以在這張表上創建一個 city 和 username 的聯合索引:

alter table user add index idx_city_username(city, username);

在這個聯合索引上,我們依然可以用樹搜索的方式定位到第一個滿足 city='南京' 的記錄,并且額外確保了,接下來按順序取 “下一條記錄” 的遍歷過程中,只要 city 的值是南京,username 的值就一定是有序的(不清楚的小伙伴可以回看下聯合索引相關的知識)。

這樣整個查詢過程的流程就變成了:

1)從聯合索引 (city, username) 上找到第一個滿足 city='南京' 條件的主鍵 id

2)到主鍵 id 的索引樹上查找到對應的整行數據(回表查詢),取出 username、city 和 age 這三個字段的值,作為結果集的一部分直接返回

3)從聯合索引 (city, username) 上取下一個記錄主鍵 id;

4)重復步驟 2、3,直到查到第 1000 條記錄,或者是不滿足 city='南京' 條件時循環結束

可以看到,這個查詢過程不需要 sort_buffer,也不需要排序,整個流程被大大縮短了。

再用 explain 分析下這條語句:

從圖中可以看到,Extra 字段中沒有 Using filesort 了,也就是不需要排序了。

而且由于 (city,username) 這個聯合索引本身有序,所以這個查詢也不用把 4000 行全都讀一遍,只要找到滿足條件的前 1000 條記錄就可以退出了。也就是說,在我們這個例子里,只需要掃描 1000 次就可以了。

說到這里,不知道有沒有小伙伴能夠察覺點什么

回表查詢!

是的,說了這么多,回表查詢這個東西一直都在啊,完全可以用上 覆蓋索引 來去掉回表過程啊~

不就是要回表取出 username、city 和 age 這三個字段的值嗎,咱就直接創建一個 city、name 和 age 的聯合索引,對應的 SQL 語句就是:

alter table user add index idx_city_username_age(city, username, age);

這樣,整個流程就被進一步簡化:

1)從聯合索引 (city, username, age) 樹上找到第一個滿足 city='南京' 條件的記錄,把這條記錄作為結果集的一部分直接返回;

2)從聯合索引 (city, username, age) 樹上取下一個記錄,同樣將這條記錄作為結果集的一部分直接返回

3)重復執行步驟 2,直到查到第 1000 條記錄,或者是不滿足 city='南京' 條件時循環結束

如下圖所示:

當然了,使用覆蓋索引性能上會快很多,但是索引的維護也是需要代價的,這里需要自己做一個權衡取舍~

最后放上這道題的背誦版:

?? 面試官:SQL 優化了解過嗎?

?? 小牛肉:我來說一下 order by 語句的優化。

  • order by 的基本原理其實就是 MySQL 會給每個線程分配一塊內存也就是 sort_buffer 用于排序,sort_buffer 中存儲的是 select 涉及到的所有的字段,可以稱為全字段排序吧。排序這個動作,可能在內存中完成,也可能需要使用外部排序,這取決于排序所需的內存和 sort_buffer 的大小,由參數 sort_buffer_size 決定。如果要排序的數據量小于 sort_buffer_size,排序就在內存中完成。但如果排序數據量太大,內存放不下,就需要利用磁盤臨時文件來輔助排序。
  • 這里其實可以優化下,只存放排序相關的字段,而不是 select 涉及的所有字段,這樣 sort_buffer 中存放的東西就多一點,就盡可能避免使用磁盤進行外部排序,或者說使得劃分的磁盤文件相對變少,減少磁盤訪問。這種排序稱為 rowid 排序。如果表中單行的長度超過 max_length_for_sort_data 定義的值,那 MySQL 就認為單行太大(那么數據量肯定就越大,sort_buffer 可能不夠用),由全字段排序改為 rowid 排序。

以上是我們說的關于 order by 的兩個參數優化,還可以根據索引進行一些優化

  • 以 select a, b, c from table where a = xxxx order by b 為例,我們為查詢條件 a 和排序條件 b 建立聯合索引,聯合索引就是 a 是從小到大絕對有序的,如果 a 相同,再按 b 從小到大排序,這樣就不需要排序了,直接避免了排序這個操作。
  • 還可以進一步優化,由于聯合索引 (a, b) 中沒有 c 的值,所以從聯合索引樹上獲取符合條件的對應主鍵 id 后,還需要回表查詢取出 a b c 的值,這個回表查詢的過程可以通過建立 (a,b,c) 覆蓋索引來避免。


責任編輯:武曉燕 來源: 飛天小牛肉
相關推薦

2022-03-14 10:14:43

底層系統Nacos

2018-11-09 09:34:05

面試Spring Clou底層

2021-08-10 18:36:02

Express原理面試

2020-11-24 07:48:32

React

2020-10-20 09:12:57

axios核心原理

2018-09-28 05:25:53

TopK算法代碼

2021-12-02 08:19:06

MVCC面試數據庫

2022-08-27 13:49:36

ES7promiseresolve

2012-11-30 16:38:37

面試

2018-10-28 22:37:00

計數排序排序面試

2018-11-01 13:49:23

桶排序排序面試

2020-10-23 09:26:57

React-Redux

2020-04-16 08:22:11

HTTPS加解密協議

2021-05-20 08:54:16

Go面向對象

2010-08-23 15:06:52

發問

2018-11-06 11:40:19

時間復雜度面試算法

2022-05-24 08:03:28

InnoDBMySQL數據

2019-04-02 17:40:47

春招面試Python面試題

2024-07-01 00:00:02

2021-06-03 08:55:54

分布式事務ACID
點贊
收藏

51CTO技術棧公眾號

亚洲成人一区二区| 岛国精品一区二区| 日韩在线观看精品| www.四虎在线| 三级成人在线| 亚洲色图.com| 麻豆视频成人| aaa国产视频| 欧美亚洲一级| 久热精品视频在线| 亚洲专区区免费| 999久久久国产999久久久| 亚洲一区二区三区在线| 青娱乐一区二区| 精品人妻一区二区三区三区四区| 久久久久国产精品一区三寸| 久久在线观看视频| 精品无人区无码乱码毛片国产| 日本在线一区二区| 精品久久中文字幕久久av| 在线观看成人av| 亚洲三区在线播放| 国产精品自拍毛片| 国产精品日日摸夜夜添夜夜av| 国产一级黄色av| 日产精品一区二区| 日韩精品有码在线观看| 香蕉视频xxxx| 韩国精品视频在线观看| 欧美日韩午夜剧场| 台湾无码一区二区| 免费人成在线观看播放视频| 国产日韩欧美a| 国产日韩一区二区| 午夜精品久久久久久久爽| 奇米一区二区三区av| 91精品国产沙发| 久久久久香蕉视频| 欧美久久成人| 久久精品视频播放| 欧美a级片免费看| 精品黄色一级片| 国产亚洲一区二区在线| 久久久亚洲av波多野结衣| 狠狠久久伊人| 亚洲精品97久久| 第四色在线视频| 成人av影音| 日韩精品专区在线影院重磅| 天堂中文av在线| 久久青草视频| 欧美精品日韩综合在线| av网站在线不卡| 三上悠亚激情av一区二区三区 | 日韩在线影院| 日韩欧美一区二区三区| 欧美污视频网站| 成人性生交大片免费观看网站| 精品国产91久久久久久| 亚洲国产成人精品无码区99| 丁香花高清在线观看完整版| 亚洲成人激情av| 亚洲美免无码中文字幕在线| 无遮挡爽大片在线观看视频| 欧美午夜精品伦理| 不卡av免费在线| 精品美女一区| 日韩一级完整毛片| 88av在线播放| 欧洲毛片在线视频免费观看| 久久久国产一区二区| 五月天婷婷色综合| 亚洲日本国产| 日本在线精品视频| 艳妇乳肉豪妇荡乳av| 国产综合色在线视频区| caoporn国产精品免费公开| 人妻无码中文字幕免费视频蜜桃| 99久久精品国产导航| 日韩不卡av| 福利在线视频网站| 午夜伦理一区二区| 免费裸体美女网站| 国产亚洲亚洲国产一二区| 精品久久久久一区二区国产| 一区二区三区免费在线观看视频| 日韩久久综合| 欧美高清在线观看| 无码人妻丰满熟妇区五十路| 国内成人精品2018免费看| 国产综合欧美在线看| yw视频在线观看| 一区二区三区在线观看欧美| 日本久久久精品视频| 婷婷激情成人| 日韩国产在线看| 99自拍视频在线| 中文精品在线| 成人午夜黄色影院| 五月天婷婷视频| 成人免费在线视频观看| 国产精品网站免费| 91丨精品丨国产| 在线看片日韩| 国产乱子伦农村叉叉叉| 国产剧情在线| 欧美性xxxxx极品娇小| 午夜两性免费视频| 琪琪久久久久日韩精品| 精品国产一区二区三区四区在线观看| 日韩欧美国产亚洲| 国内精品免费在线观看| 日本一区二区三区四区在线观看| 亚洲丝袜精品| 欧美日韩激情一区二区三区| theav精尽人亡av| 欧美99久久| 国产欧美精品xxxx另类| 你懂的在线观看| 亚洲最快最全在线视频| 欧美成年人视频在线观看| 亚瑟一区二区三区四区| 欧美丰满片xxx777| 亚洲熟妇无码久久精品| 久久久一区二区| 人妻久久久一区二区三区| 国产一区一区| 日韩有码在线播放| 中文字幕+乱码+中文| 久久综合九色欧美综合狠狠| 91成人综合网| 日韩视频一二区| 久久精品国产亚洲精品| 一卡二卡三卡在线观看| 国产日韩高清在线| 97xxxxx| 日本久久成人网| 性欧美xxxx交| 好吊视频一区二区三区| 一区二区成人在线观看| 中文字幕avav| 欧美天堂亚洲电影院在线观看 | 欧美综合影院| 中文一区二区视频| 欧美性受xxx黑人xyx性爽| 久久久另类综合| 亚洲精品中文字幕无码蜜桃| 综合综合综合综合综合网| 欧美性视频在线| 日本中文字幕一区二区有码在线 | 黄色aaa级片| 国产欧美日韩在线观看视频| 国产精品电影网站| 超碰免费97在线观看| 欧美视频自拍偷拍| 麻豆一区在线观看| 国产九色精品成人porny | 日本少妇xxxxx| 日本欧美在线观看| 青春草在线视频免费观看| 国产麻豆精品| 欧美激情亚洲综合一区| 无码国产精品一区二区免费16 | 一区精品在线观看| 中文字幕在线不卡一区二区三区| 亚洲精品手机在线观看| 91久久久精品国产| 99久久免费国| 黄色综合网址| 日韩亚洲第一页| 亚洲国产www| 欧美日韩国产精品专区 | 玉足女爽爽91| 国产女人18毛片水真多18| 免费日韩av片| 一区二区三区观看| jazzjazz国产精品久久| 秋霞av国产精品一区| 天堂中文а√在线| 欧美videos中文字幕| 午夜毛片在线观看| 国产精品美女久久久久高潮| 97免费公开视频| 亚洲欧美日本视频在线观看| 一区二区不卡在线| 国产精品极品| 国产精品视频资源| 国产第一页在线| 一区二区三区国产在线观看| a毛片在线免费观看| 欧美日韩在线看| 亚洲精品久久久久久国| 91美女在线视频| 色欲无码人妻久久精品| 欧美亚洲一区| 欧美少妇在线观看| 国产欧美日韩视频在线| 成人区精品一区二区| 午夜av成人| 孩xxxx性bbbb欧美| 黄网站免费在线播放| 亚洲乱码国产乱码精品精天堂| 99国产精品久久久久久久成人| 精品美女久久久久久免费| 亚洲av无一区二区三区| 91亚洲精华国产精华精华液| 粉色视频免费看| 久久久久久黄| 男人用嘴添女人下身免费视频| 欧美成人milf| 日韩高清三级| 欧美亚洲tv| 国产精品二区在线| 亚洲综合伊人| 国产精品视频久久久久| 超碰一区二区| 98视频在线噜噜噜国产| 午夜激情在线| 另类色图亚洲色图| 91社区在线观看播放| 亚洲男人第一网站| 无码精品黑人一区二区三区| 日韩精品一区二区三区视频在线观看 | 国产xxxxhd| 久久成人免费网| 黑人粗进入欧美aaaaa| 亚洲视频二区| 无码专区aaaaaa免费视频| 欧美日韩国产在线一区| 亚洲免费视频播放| 国产精品毛片一区二区在线看| 天天综合狠狠精品| 国产亚洲欧美日韩在线观看一区二区 | 久久亚洲精品中文字幕冲田杏梨| 成人免费黄色网页| 亚洲区在线播放| 免费理论片在线观看播放老| 日韩精品中文字幕在线| 午夜视频福利在线| 日韩av在线一区| 亚州视频一区二区三区| 日韩精品免费在线视频| 熟妇人妻一区二区三区四区| 欧美成人a视频| 亚洲免费国产视频| 精品美女被调教视频大全网站| 国产激情无套内精对白视频| 日韩精品资源二区在线| 欧美一区二区黄片| 亚洲第一中文字幕| 国产精品国产高清国产| 国产视频亚洲精品| 国产高清一区在线观看| 国产亚洲精品激情久久| fc2在线中文字幕| 色爱av美腿丝袜综合粉嫩av| 乱人伦中文视频在线| 久久精品国产视频| 狂野欧美性猛交xxxxx视频| 国模精品视频一区二区三区| 久草免费在线视频| 国产精品jizz在线观看麻豆| 都市激情亚洲一区| 日本国产欧美一区二区三区| www.youjizz.com在线| 日韩美女免费线视频| 91另类视频| 亚洲最大的av网站| 欧美sss在线视频| 日韩精品一区二区三区丰满| 羞羞色午夜精品一区二区三区| wwwwww欧美| 免费永久网站黄欧美| 在线免费视频一区| 国产伦精品一区二区三区免费迷| www.com日本| 国产午夜三级一区二区三| 亚洲欧美另类日本| 亚洲一区二区美女| 国产91精品看黄网站在线观看| 欧美高清dvd| 男人天堂一区二区| 中文字幕综合一区| 欧美巨大xxxx做受沙滩| 国产精品99蜜臀久久不卡二区| 国产精品久久久久久久久久辛辛 | 国产主播在线一区| a级日韩大片| 亚洲精品一区二区三区av| 欧美天天视频| www.亚洲高清| 99久久99久久精品免费看蜜桃| 日本视频在线免费| 午夜日韩在线电影| 国产精品一二三四五区| 精品呦交小u女在线| 中文字幕在线观看播放| 国产99视频在线观看| 日韩最新av| 亚洲 国产 日韩 综合一区| 国产精品红桃| www欧美激情| 91亚洲国产成人精品一区二三| 国语对白在线播放| 色婷婷综合五月| 丰满人妻妇伦又伦精品国产| 日韩中文字幕在线视频播放| 亚洲精品mv| 国产精品日韩一区二区免费视频| 日韩成人a**站| 777精品久无码人妻蜜桃| 韩国欧美国产1区| 懂色av蜜桃av| 欧美丝袜一区二区三区| 精品人妻伦一二三区久久| 色av中文字幕一区| 免费观看成人性生生活片| 精品欧美一区二区精品久久| 国产精品第十页| 99999精品| 国产精品国产三级国产有无不卡| 欧美激情黑白配| 精品国产自在久精品国产| 欧美69xxx| 国产欧美欧洲在线观看| 国产一区二区三区91| 国产美女无遮挡网站| 成人精品高清在线| 久久久久久av无码免费网站| 777色狠狠一区二区三区| 成人77777| 国产精品国产自产拍高清av水多 | 日韩精品在线免费观看| www.8ⅹ8ⅹ羞羞漫画在线看| 91在线免费视频| 久久精品久久久| 中文字幕国产高清| 自拍偷拍亚洲欧美日韩| 91精品国产乱码久久久久| 中文在线不卡视频| xxxxx.日韩| 一区二区精品在线| 激情欧美一区二区| 日韩国产第一页| 91精品国产综合久久久久久| 看黄网站在线| 97超级碰碰| 欧美激情视频一区二区三区在线播放| 四虎成人在线播放| 亚洲黄色片在线观看| 亚洲毛片在线播放| 国语自产精品视频在免费| 亚洲另类av| 国产a级片免费观看| 国产性色一区二区| 亚洲天堂男人网| 久久久精品国产一区二区| 精品中文字幕一区二区三区| 日本中文字幕一级片| 国产盗摄精品一区二区三区在线| 久久国产在线观看| 亚洲精品国精品久久99热一| 亚洲欧美电影| 性欧美.com| 国产乱一区二区| 久久露脸国语精品国产91| 亚洲美女av电影| 成人国产精品一区二区免费麻豆| 中文字幕一区二区中文字幕| 国产黑丝在线一区二区三区| 国产精品.www| 亚洲欧美中文在线视频| 日韩久久99| 欧美性潮喷xxxxx免费视频看| 91麻豆视频网站| 亚洲一区二区视频在线播放| 欧美日韩aaaa| 综合干狼人综合首页| 91福利国产成人精品播放| 亚洲精品v日韩精品| 欧美视频免费一区二区三区| 国产乱肥老妇国产一区二| 韩国亚洲精品| 人人妻人人澡人人爽| 日韩欧美一区二区三区在线| 亚洲天堂免费电影| 一区二区三区av在线| 成人免费的视频| 伊人免费在线观看| 欧美激情在线播放| 成人免费a**址| 制服丝袜在线第一页| 欧美日韩在线播| h片在线观看视频免费| 在线看无码的免费网站| 成人av网址在线观看| 国产又爽又黄免费软件| 26uuu亚洲伊人春色| 欧美黄色aaaa| 国产精品久久久视频|