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

看一遍就理解:Order By詳解

數(shù)據(jù)庫 Oracle
日常開發(fā)中,我們經(jīng)常會(huì)使用到order by,親愛的小伙伴,你是否知道order by 的工作原理呢?order by的優(yōu)化思路是怎樣的呢?使用order by有哪些注意的問題呢?

[[405503]]

前言

日常開發(fā)中,我們經(jīng)常會(huì)使用到order by,親愛的小伙伴,你是否知道order by 的工作原理呢?order by的優(yōu)化思路是怎樣的呢?使用order by有哪些注意的問題呢?本文將跟大家一起來學(xué)習(xí),攻克order by~

一個(gè)使用order by 的簡單例子

假設(shè)用一張員工表,表結(jié)構(gòu)如下:

  1. CREATE TABLE `staff` ( 
  2. `id` BIGINT ( 11 ) AUTO_INCREMENT COMMENT '主鍵id'
  3. `id_card` VARCHAR ( 20 ) NOT NULL COMMENT '身份證號(hào)碼'
  4. `nameVARCHAR ( 64 ) NOT NULL COMMENT '姓名'
  5. `age` INT ( 4 ) NOT NULL COMMENT '年齡'
  6. `city` VARCHAR ( 64 ) NOT NULL COMMENT '城市'
  7. PRIMARY KEY ( `id`), 
  8. INDEX idx_city ( `city` ) 
  9. ) ENGINE = INNODB COMMENT '員工表'

表數(shù)據(jù)如下:

我們現(xiàn)在有這么一個(gè)需求:查詢前10個(gè),來自深圳員工的姓名、年齡、城市,并且按照年齡小到大排序。對(duì)應(yīng)的 SQL 語句就可以這么寫:

  1. select name,age,city from staff where city = '深圳' order by age limit 10; 

這條語句的邏輯很清楚,但是它的底層執(zhí)行流程是怎樣的呢?

order by 工作原理

explain 執(zhí)行計(jì)劃

我們先用Explain關(guān)鍵字查看一下執(zhí)行計(jì)劃

  • 執(zhí)行計(jì)劃的key這個(gè)字段,表示使用到索引idx_city
  • Extra 這個(gè)字段的 Using index condition 表示索引條件
  • Extra 這個(gè)字段的 Using filesort表示用到排序

我們可以發(fā)現(xiàn),這條SQL使用到了索引,并且也用到排序。那么它是怎么排序的呢?

全字段排序

MySQL 會(huì)給每個(gè)查詢線程分配一塊小內(nèi)存,用于排序的,稱為 sort_buffer。什么時(shí)候把字段放進(jìn)去排序呢,其實(shí)是通過idx_city索引找到對(duì)應(yīng)的數(shù)據(jù),才把數(shù)據(jù)放進(jìn)去啦。

我們回顧下索引是怎么找到匹配的數(shù)據(jù)的,現(xiàn)在先把索引樹畫出來吧,idx_city索引樹如下:

idx_city索引樹,葉子節(jié)點(diǎn)存儲(chǔ)的是主鍵id。還有一棵id主鍵聚族索引樹,我們?cè)佼嫵鼍圩逅饕龢鋱D吧:

我們的查詢語句是怎么找到匹配數(shù)據(jù)的呢?先通過idx_city索引樹,找到對(duì)應(yīng)的主鍵id,然后再通過拿到的主鍵id,搜索id主鍵索引樹,找到對(duì)應(yīng)的行數(shù)據(jù)。

加上order by之后,整體的執(zhí)行流程就是:

  1. MySQL 為對(duì)應(yīng)的線程初始化sort_buffer,放入需要查詢的name、age、city字段;
  2. 從索引樹idx_city, 找到第一個(gè)滿足 city='深圳’條件的主鍵 id,也就是圖中的id=9;
  3. 到主鍵 id 索引樹拿到id=9的這一行數(shù)據(jù), 取name、age、city三個(gè)字段的值,存到sort_buffer;
  4. 從索引樹idx_city 拿到下一個(gè)記錄的主鍵 id,即圖中的id=13;
  5. 重復(fù)步驟 3、4 直到city的值不等于深圳為止;
  6. 前面5步已經(jīng)查找到了所有city為深圳的數(shù)據(jù),在 sort_buffer中,將所有數(shù)據(jù)根據(jù)age進(jìn)行排序;
  7. 按照排序結(jié)果取前10行返回給客戶端。

執(zhí)行示意圖如下:

將查詢所需的字段全部讀取到sort_buffer中,就是全字段排序。這里面,有些小伙伴可能會(huì)有個(gè)疑問,把查詢的所有字段都放到sort_buffer,而sort_buffer是一塊內(nèi)存來的,如果數(shù)據(jù)量太大,sort_buffer放不下怎么辦呢?

磁盤臨時(shí)文件輔助排序

實(shí)際上,sort_buffer的大小是由一個(gè)參數(shù)控制的:sort_buffer_size。如果要排序的數(shù)據(jù)小于sort_buffer_size,排序在sort_buffer 內(nèi)存中完成,如果要排序的數(shù)據(jù)大于sort_buffer_size,則借助磁盤文件來進(jìn)行排序

如何確定是否使用了磁盤文件來進(jìn)行排序呢?可以使用以下這幾個(gè)命令

  1. ## 打開optimizer_trace,開啟統(tǒng)計(jì) 
  2. set optimizer_trace = "enabled=on"
  3. ## 執(zhí)行SQL語句 
  4. select name,age,city from staff where city = '深圳' order by age limit 10; 
  5. ## 查詢輸出的統(tǒng)計(jì)信息 
  6. select * from information_schema.optimizer_trace  

可以從 number_of_tmp_files 中看出,是否使用了臨時(shí)文件。

number_of_tmp_files 表示使用來排序的磁盤臨時(shí)文件數(shù)。如果number_of_tmp_files>0,則表示使用了磁盤文件來進(jìn)行排序。

使用了磁盤臨時(shí)文件,整個(gè)排序過程又是怎樣的呢?

  1. 從主鍵Id索引樹,拿到需要的數(shù)據(jù),并放到sort_buffer內(nèi)存塊中。當(dāng)sort_buffer快要滿時(shí),就對(duì)sort_buffer中的數(shù)據(jù)排序,排完后,把數(shù)據(jù)臨時(shí)放到磁盤一個(gè)小文件中。
  2. 繼續(xù)回到主鍵 id 索引樹取數(shù)據(jù),繼續(xù)放到sort_buffer內(nèi)存中,排序后,也把這些數(shù)據(jù)寫入到磁盤臨時(shí)小文件中。
  3. 繼續(xù)循環(huán),直到取出所有滿足條件的數(shù)據(jù)。最后把磁盤的臨時(shí)排好序的小文件,合并成一個(gè)有序的大文件。

TPS: 借助磁盤臨時(shí)小文件排序,實(shí)際上使用的是歸并排序算法。

小伙伴們可能會(huì)有個(gè)疑問,既然sort_buffer放不下,就需要用到臨時(shí)磁盤文件,這會(huì)影響排序效率。那為什么還要把排序不相關(guān)的字段(name,city)放到sort_buffer中呢?只放排序相關(guān)的age字段,它不香嗎?可以了解下rowid 排序。

rowid 排序

rowid 排序就是,只把查詢SQL需要用于排序的字段和主鍵id,放到sort_buffer中。那怎么確定走的是全字段排序還是rowid 排序排序呢?

實(shí)際上有個(gè)參數(shù)控制的。這個(gè)參數(shù)就是max_length_for_sort_data,它表示MySQL用于排序行數(shù)據(jù)的長度的一個(gè)參數(shù),如果單行的長度超過這個(gè)值,MySQL 就認(rèn)為單行太大,就換rowid 排序。我們可以通過命令看下這個(gè)參數(shù)取值。

  1. show variables like 'max_length_for_sort_data'

max_length_for_sort_data 默認(rèn)值是1024。因?yàn)楸疚氖纠衝ame,age,city長度=64+4+64 =132 < 1024, 所以走的是全字段排序。我們來改下這個(gè)參數(shù),改小一點(diǎn),

  1. ## 修改排序數(shù)據(jù)最大單行長度為32 
  2. set max_length_for_sort_data = 32; 
  3. ## 執(zhí)行查詢SQL 
  4. select name,age,city from staff where city = '深圳' order by age limit 10; 

使用rowid 排序的話,整個(gè)SQL執(zhí)行流程又是怎樣的呢?

  1. MySQL 為對(duì)應(yīng)的線程初始化sort_buffer,放入需要排序的age字段,以及主鍵id;
  2. 從索引樹idx_city, 找到第一個(gè)滿足 city='深圳’條件的主鍵 id,也就是圖中的id=9;
  3. 到主鍵 id 索引樹拿到id=9的這一行數(shù)據(jù), 取age和主鍵id的值,存到sort_buffer;
  4. 從索引樹idx_city 拿到下一個(gè)記錄的主鍵 id,即圖中的id=13;
  5. 重復(fù)步驟 3、4 直到city的值不等于深圳為止;
  6. 前面5步已經(jīng)查找到了所有city為深圳的數(shù)據(jù),在 sort_buffer中,將所有數(shù)據(jù)根據(jù)age進(jìn)行排序;
  7. 遍歷排序結(jié)果,取前10行,并按照 id 的值回到原表中,取出city、name 和 age 三個(gè)字段返回給客戶端。

執(zhí)行示意圖如下:

對(duì)比一下全字段排序的流程,rowid 排序多了一次回表。

  • 什么是回表?拿到主鍵再回到主鍵索引查詢的過程,就叫做回表”

我們通過optimizer_trace,可以看到是否使用了rowid排序的:

  1. ## 打開optimizer_trace,開啟統(tǒng)計(jì) 
  2. set optimizer_trace = "enabled=on"
  3. ## 執(zhí)行SQL語句 
  4. select name,age,city from staff where city = '深圳' order by age limit 10; 
  5. ## 查詢輸出的統(tǒng)計(jì)信息 
  6. select * from information_schema.optimizer_trace  

全字段排序與rowid排序?qū)Ρ?/p>

  • 全字段排序:sort_buffer內(nèi)存不夠的話,就需要用到磁盤臨時(shí)文件,造成磁盤訪問。
  • rowid排序:sort_buffer可以放更多數(shù)據(jù),但是需要再回到原表去取數(shù)據(jù),比全字段排序多一次回表。

一般情況下,對(duì)于InnoDB存儲(chǔ)引擎,會(huì)優(yōu)先使用全字段排序。可以發(fā)現(xiàn) max_length_for_sort_data 參數(shù)設(shè)置為1024,這個(gè)數(shù)比較大的。一般情況下,排序字段不會(huì)超過這個(gè)值,也就是都會(huì)走全字段排序。

order by的一些優(yōu)化思路

我們?nèi)绾蝺?yōu)化order by語句呢?

  • 因?yàn)閿?shù)據(jù)是無序的,所以就需要排序。如果數(shù)據(jù)本身是有序的,那就不用排了。而索引數(shù)據(jù)本身是有序的,我們通過建立聯(lián)合索引,優(yōu)化order by 語句。
  • 我們還可以通過調(diào)整max_length_for_sort_data等參數(shù)優(yōu)化;

聯(lián)合索引優(yōu)化

再回顧下示例SQL的查詢計(jì)劃

  1. explain select name,age,city from staff where city = '深圳' order by age limit 10; 

我們給查詢條件city和排序字段age,加個(gè)聯(lián)合索引idx_city_age。再去查看執(zhí)行計(jì)劃

  1. alter table staff add  index idx_city_age(city,age); 
  2. explain select name,age,city from staff where city = '深圳' order by age limit 10; 

可以發(fā)現(xiàn),加上idx_city_age聯(lián)合索引,就不需要Using filesort排序了。為什么呢?因?yàn)樗饕旧硎怯行虻模覀兛梢钥聪耰dx_city_age聯(lián)合索引示意圖,如下:

整個(gè)SQL執(zhí)行流程變成醬紫:

  1. 從索引idx_city_age找到滿足city='深圳’ 的主鍵 id
  2. 到主鍵 id索引取出整行,拿到 name、city、age 三個(gè)字段的值,作為結(jié)果集的一部分直接返回
  3. 從索引idx_city_age取下一個(gè)記錄主鍵id
  4. 重復(fù)步驟 2、3,直到查到第10條記錄,或者是不滿足city='深圳’ 條件時(shí)循環(huán)結(jié)束。

流程示意圖如下:

從示意圖看來,還是有一次回表操作。針對(duì)本次示例,有沒有更高效的方案呢?有的,可以使用覆蓋索引:

  • 覆蓋索引:在查詢的數(shù)據(jù)列里面,不需要回表去查,直接從索引列就能取到想要的結(jié)果。換句話說,你SQL用到的索引列數(shù)據(jù),覆蓋了查詢結(jié)果的列,就算上覆蓋索引了。”

我們給city,name,age 組成一個(gè)聯(lián)合索引,即可用到了覆蓋索引,這時(shí)候SQL執(zhí)行時(shí),連回表操作都可以省去啦。

調(diào)整參數(shù)優(yōu)化

我們還可以通過調(diào)整參數(shù),去優(yōu)化order by的執(zhí)行。比如可以調(diào)整sort_buffer_size的值。因?yàn)閟ort_buffer值太小,數(shù)據(jù)量大的話,會(huì)借助磁盤臨時(shí)文件排序。如果MySQL服務(wù)器配置高的話,可以使用稍微調(diào)整大點(diǎn)。

我們還可以調(diào)整max_length_for_sort_data的值,這個(gè)值太小的話,order by會(huì)走rowid排序,會(huì)回表,降低查詢性能。所以max_length_for_sort_data可以適當(dāng)大一點(diǎn)。

當(dāng)然,很多時(shí)候,這些MySQL參數(shù)值,我們直接采用默認(rèn)值就可以了。

使用order by 的一些注意點(diǎn)

沒有where條件,order by字段需要加索引嗎

日常開發(fā)過程中,我們可能會(huì)遇到?jīng)]有where條件的order by,那么,這時(shí)候order by后面的字段是否需要加索引呢。如有這么一個(gè)SQL,create_time是否需要加索引:

  1. select * from A order by create_time; 

無條件查詢的話,即使create_time上有索引,也不會(huì)使用到。因?yàn)镸ySQL優(yōu)化器認(rèn)為走普通二級(jí)索引,再去回表成本比全表掃描排序更高。所以選擇走全表掃描,然后根據(jù)全字段排序或者rowid排序來進(jìn)行。

如果查詢SQL修改一下:

  1. select * from A order by create_time limit m; 

無條件查詢,如果m值較小,是可以走索引的.因?yàn)镸ySQL優(yōu)化器認(rèn)為,根據(jù)索引有序性去回表查數(shù)據(jù),然后得到m條數(shù)據(jù),就可以終止循環(huán),那么成本比全表掃描小,則選擇走二級(jí)索引。

分頁limit過大時(shí),會(huì)導(dǎo)致大量排序怎么辦?

假設(shè)SQL如下:

  1. select * from A order by a limit 100000,10 

可以記錄上一頁最后的id,下一頁查詢時(shí),查詢條件帶上id,如:where id > 上一頁最后id limit 10。

也可以在業(yè)務(wù)允許的情況下,限制頁數(shù)。

索引存儲(chǔ)順序與order by不一致,如何優(yōu)化?

假設(shè)有聯(lián)合索引 idx_age_name, 我們需求修改為這樣:查詢前10個(gè)員工的姓名、年齡,并且按照年齡小到大排序,如果年齡相同,則按姓名降序排。對(duì)應(yīng)的 SQL 語句就可以這么寫:

  1. select name,age from staff  order by age ,name desc limit 10; 

我們看下執(zhí)行計(jì)劃,發(fā)現(xiàn)使用到Using filesort。

這是因?yàn)椋琲dx_age_name索引樹中,age從小到大排序,如果age相同,再按name從小到大排序。而order by 中,是按age從小到大排序,如果age相同,再按name從大到小排序。也就是說,索引存儲(chǔ)順序與order by不一致。

我們?cè)趺磧?yōu)化呢?如果MySQL是8.0版本,支持Descending Indexes,可以這樣修改索引:

  1. CREATE TABLE `staff` ( 
  2.   `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵id'
  3.   `id_card` varchar(20) NOT NULL COMMENT '身份證號(hào)碼'
  4.   `namevarchar(64) NOT NULL COMMENT '姓名'
  5.   `age` int(4) NOT NULL COMMENT '年齡'
  6.   `city` varchar(64) NOT NULL COMMENT '城市'
  7.   PRIMARY KEY (`id`), 
  8.   KEY `idx_age_name` (`age`,`namedesc) USING BTREE 
  9. ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='員工表'

使用了in條件多個(gè)屬性時(shí),SQL執(zhí)行是否有排序過程

如果我們有聯(lián)合索引idx_city_name,執(zhí)行這個(gè)SQL的話,是不會(huì)走排序過程的,如下:

  1. select * from staff where city in ('深圳'order by age limit 10; 

但是,如果使用in條件,并且有多個(gè)條件時(shí),就會(huì)有排序過程。

  1. explain select * from staff where city in ('深圳','上海'order by age limit 10; 

 

這是因?yàn)?in有兩個(gè)條件,在滿足深圳時(shí),age是排好序的,但是把滿足上海的age也加進(jìn)來,就不能保證滿足所有的age都是排好序的。因此需要Using filesort。

本文轉(zhuǎn)載自微信公眾號(hào)「撿田螺的小男孩」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系撿田螺的小男孩公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 撿田螺的小男孩
相關(guān)推薦

2021-08-12 10:36:18

order byMySQL數(shù)據(jù)庫

2022-01-17 20:59:37

開發(fā)group by思路

2025-02-13 09:06:27

2021-12-01 07:26:13

IO模型異步

2024-03-26 07:59:32

IO模型多路復(fù)用

2024-03-12 08:20:57

零拷貝存儲(chǔ)開發(fā)

2021-10-07 20:12:03

MVCC事務(wù)原理

2020-02-09 17:30:54

反轉(zhuǎn)鏈表程序員節(jié)點(diǎn)

2019-03-19 14:11:44

VLANLANMAC

2022-05-08 23:05:38

Route-Poli路由策略

2023-09-12 07:31:45

HashMap線程

2022-08-26 10:41:03

指針C語言

2019-09-19 08:04:40

網(wǎng)絡(luò)七層模型TCPUDP

2021-10-08 07:53:01

事務(wù)隔離級(jí)別

2023-08-14 07:49:42

AI訓(xùn)練

2023-01-10 19:47:47

Redis原理多線程

2017-12-26 14:17:24

潤乾報(bào)表

2021-11-25 08:16:46

Wi-FiWi-Fi 6路由Wi-Fi 5

2015-10-10 11:10:24

重敲代碼拷貝粘貼

2021-03-11 07:14:01

Epoll原理線程
點(diǎn)贊
收藏

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

中文字幕视频免费观看| 国产交换配乱淫视频免费| 伊人春色在线观看| 成人精品视频一区二区三区| 欧美一二三视频| 国产黄色录像视频| 都市激情亚洲| 欧美午夜精品免费| 欧美日韩激情四射| 国产三级在线免费| 懂色av噜噜一区二区三区av| 国产精品99导航| 欧美精品久久久久性色| 国产亚洲一区二区三区不卡| 欧美一区二区三区在| 日本中文字幕网址| 免费a在线看| 97久久精品人人做人人爽50路| 国产精品高清在线| 日韩污视频在线观看| 久久免费大视频| 日韩成人中文字幕| 色姑娘综合天天| 色成人免费网站| 午夜电影久久久| 好色先生视频污| 国产永久免费高清在线观看视频| 国产a区久久久| 国产精品视频99| 91在线视频在线观看| 国产精品99免费看| 久久久精品视频在线观看| 美女被到爽高潮视频| 好吊妞视频这里有精品| 67194成人在线观看| mm1313亚洲国产精品无码试看| www.色在线| 一区二区国产视频| 黄色免费高清视频| 一本一道波多野毛片中文在线 | 日本亚洲欧洲色| 免费人成视频在线| 亚洲一区二区三区| 日韩中文娱乐网| 级毛片内射视频| 国产精品一国产精品| 亚洲老头老太hd| aaaaa级少妇高潮大片免费看| 国产66精品| 精品欧美乱码久久久久久1区2区| 香蕉网在线视频| 久久99精品久久久野外观看| 欧美精品123区| 中文字幕第38页| 欧美高清免费| 欧美日韩综合在线免费观看| 9l视频白拍9色9l视频| 成人av集中营| 69堂精品视频| 女女调教被c哭捆绑喷水百合| 日本少妇精品亚洲第一区| 91精品国产综合久久久久久| 91热视频在线观看| 91综合精品国产丝袜长腿久久| 日韩欧美一区二区免费| 国产伦理在线观看| 狼人精品一区二区三区在线| 日韩精品久久久久久久玫瑰园| 亚欧洲乱码视频| 日韩欧美综合| 欧美成人激情视频免费观看| 免费在线观看亚洲| 性色一区二区| 国产欧美婷婷中文| 亚洲av无码乱码国产精品久久 | 日本高清不卡视频| 日本人视频jizz页码69| 亚瑟国产精品| 精品国产欧美一区二区| 久久无码人妻精品一区二区三区| 国产成人精品一区二区免费看京 | 欧美日韩中文字幕视频| 国产精品久久观看| 韩剧1988免费观看全集| 欧美人一级淫片a免费播放| 久久成人免费网站| 国产伦精品一区二区三区视频孕妇 | 最新国产精品亚洲| 国产精品18p| 日日摸夜夜添夜夜添国产精品| 国产在线精品播放| 亚欧在线观看视频| 国产精品成人免费在线| 国产精品333| 成人国产精品久久| 亚洲精品在线91| www.97视频| 免费国产自线拍一欧美视频| 成人av在线网址| 你懂的在线看| 亚洲永久精品大片| 三年中国国语在线播放免费| youjizzjizz亚洲| 中文字幕在线视频日韩| 欧美福利视频一区二区| 国内久久精品视频| 日韩精品第一页| sm在线观看| 日韩一区二区三区在线| 亚洲自拍偷拍图| 一级成人国产| 国产精品av一区| 精品孕妇一区二区三区| 日韩欧亚中文在线| av av在线| 亚洲第一天堂| 国产主播喷水一区二区| 美州a亚洲一视本频v色道| 一区二区三区欧美视频| 艹b视频在线观看| 免费成人av| 97超级碰碰碰久久久| 亚洲国产精品无码久久| 亚洲欧美视频一区| 亚洲精品www.| 久久国产精品亚洲人一区二区三区 | 神马影院午夜我不卡影院| 9999热视频在线观看| 欧美一二区视频| 日韩精品一区二区亚洲av性色 | 日韩大尺度视频| 999精品一区| 国产精品久久一| 久久久久久久影视| 色综合天天做天天爱| 自拍视频一区二区| 99视频精品| 精品国产一区二区三| 精品精品导航| 欧美精品一区二区不卡| 欧美日韩黄色网| 国产一区二区三区综合| 视频一区二区视频| 高清不卡一区| 欧美日韩国产成人在线| av天堂一区二区三区| 日韩一区中文字幕| 亚洲免费在线播放视频| 综合在线视频| av成人免费观看| 成年网站在线视频网站| 亚洲精品一区二区三区99| 国产午夜福利片| 99久久精品国产导航| 国产精品网站免费| 美女毛片一区二区三区四区| 国产精品wwwwww| av在线第一页| 91精品国产综合久久久久久| 欧美精品一区二区成人| 成人妖精视频yjsp地址| 成人综合视频在线| 欧美色女视频| 91精品啪在线观看麻豆免费| 亚洲按摩av| 日韩精品中文字幕视频在线| 好吊色在线视频| 国产精品久久久久久久午夜片| 激情成人在线观看| 国产亚洲欧洲| 亚洲二区三区四区| 欧美2区3区4区| 久久久伊人欧美| 成人综合影院| 日韩视频免费观看高清在线视频| 日韩精品一区二区三区国语自制| 久久蜜桃av一区精品变态类天堂| 15—17女人毛片| 国产综合激情| 视频一区免费观看| 91精品短视频| 国产精品久久久久久久久久小说 | 第一会所sis001亚洲| 91精品视频网站| 麻豆国产在线| 中文字幕亚洲精品| 欧美天堂在线视频| 欧美日韩一卡二卡| 青青草av在线播放| 亚洲三级电影全部在线观看高清| 欧美熟妇精品黑人巨大一二三区| 久久国产福利国产秒拍| 日韩av片在线看| 91精品观看| 日韩欧美在线电影| 国产精品久av福利在线观看| 国产精品欧美久久久| 国产丝袜视频在线播放| 在线视频一区二区| 日韩有码第一页| 91精品黄色片免费大全| 久久精品无码av| 亚洲六月丁香色婷婷综合久久 | 成人免费在线观看av| 91手机在线播放| 粉嫩91精品久久久久久久99蜜桃| 亚州av一区二区| 91麻豆免费在线视频| 亚洲人免费视频| 日本精品999| 日韩视频一区二区三区| 在线视频播放大全| 在线视频欧美区| 在线观看国产亚洲| 亚洲黄色性网站| 国产色无码精品视频国产| 国产日韩欧美不卡在线| 亚洲av成人片无码| 国产白丝网站精品污在线入口 | 97se亚洲国产综合自在线| 三级黄色片播放| 国产在线视视频有精品| 免费看污黄网站| 日韩精品欧美精品| 蜜臀av午夜一区二区三区 | 在线观看免费av网址| 日韩va欧美va亚洲va久久| 日韩av片在线看| 亚洲一区久久| jizzjizzxxxx| 日韩视频在线一区二区三区| 9色porny| 伊人激情综合| 亚洲国产成人精品无码区99| 欧美三级不卡| 日韩网站在线免费观看| 亚洲国产网站| 久久久久久免费看| 国产视频欧美| 日韩黄色片视频| 丝袜美腿成人在线| 人人爽人人av| 免费不卡在线观看| 一个色综合久久| 精品夜夜嗨av一区二区三区| 亚洲欧美日韩综合网| 裸体在线国模精品偷拍| 天堂av8在线| 国产精品一区二区免费不卡 | 国产调教视频一区| 波多野结衣片子| 亚洲国产电影在线观看| 日本猛少妇色xxxxx免费网站| 国产精品乱人伦中文| 国产一区第一页| 亚洲美女少妇撒尿| 久久丫精品久久丫| 精品久久久久久久久中文字幕| 国产精品久久久久久99| 日本高清不卡视频| 91精品中文字幕| 欧美tk—视频vk| 飘雪影视在线观看免费观看 | 免费观看一级欧美片| 国产精品福利观看| 祥仔av免费一区二区三区四区| 亚洲综合中文字幕在线| 久久精品亚洲成在人线av网址| 久久久神马电影| 日韩一区欧美| 999一区二区三区| 老**午夜毛片一区二区三区| 日日干夜夜操s8| 国产白丝精品91爽爽久久| 国产美女喷水视频| 国产精品国产三级国产aⅴ中文 | 亚洲综合大片69999| 精品久久对白| 亚洲最新在线| 日韩视频二区| 国产一级片自拍| 成人激情文学综合网| 蜜桃av乱码一区二区三区| 亚洲免费观看在线视频| 日韩毛片一区二区三区| 欧美日韩国产bt| 人妻视频一区二区三区| 中文欧美在线视频| 国产精品高颜值在线观看| 国产精品久久久久久五月尺| 91综合精品国产丝袜长腿久久| 日本在线高清视频一区| 国产精品第十页| 欧美精品性生活| av不卡免费电影| 最新一区二区三区| 在线视频观看一区| 欧美一级免费片| 色999日韩欧美国产| 色戒汤唯在线观看| 99视频免费观看蜜桃视频| 欧美美女视频| 男女激情无遮挡| 国产精品一区二区视频| 国产一区二区三区视频播放| 欧美日韩国产一区二区三区| 99久久婷婷国产一区二区三区| 一区二区三区久久精品| 丝袜诱惑一区二区| 国产精品12| 欧美一区二区三区免费看| 爱情岛论坛亚洲首页入口章节| 99久久综合色| 免费观看一级视频| 日韩一区二区三区电影在线观看| 99reav在线| 国产成人在线精品| 伊人久久大香线蕉av不卡| 一二三四视频社区在线| 国产成人午夜视频| 成人免费精品动漫网站| 精品视频色一区| 91网页在线观看| 国产精品日本精品| 欧美日韩性在线观看| 超碰影院在线观看| 久久精品网站免费观看| 国产剧情在线视频| 日韩hd视频在线观看| 川上优av中文字幕一区二区| 国产精品久久久久久久久久直播 | 中文字幕欧美一| 狠狠躁夜夜躁人人爽视频| 亚洲欧美日韩一区在线| 婷婷电影在线观看| 九九久久99| 亚洲一区二区免费看| 噜噜噜在线视频| 偷拍一区二区三区四区| 天天综合网在线观看| 97香蕉久久夜色精品国产| 六月丁香久久丫| 久久国产精品视频在线观看| 成人高清伦理免费影院在线观看| 久久艹精品视频| 亚洲黄色av网站| 涩涩视频在线| 日本高清久久一区二区三区| 老牛国产精品一区的观看方式| 91视频免费观看网站| 91电影在线观看| av大全在线免费看| 亚洲精品免费网站| 激情偷拍久久| 国产一级二级在线观看| 色久优优欧美色久优优| 午夜免费视频在线国产| 亚洲精品欧美一区二区三区| 欧美精品国产| 国产人妻人伦精品1国产丝袜| 欧美性极品xxxx做受| 国产日韩精品在线看| 国产欧美久久一区二区| 欧美成人中文| 国产精品嫩草av| 在线精品视频免费播放| 国产网友自拍视频导航网站在线观看 | 波多野结衣av一区二区全免费观看 | av在线播放网站| 91夜夜揉人人捏人人添红杏| 国产精品magnet| 精品少妇人妻一区二区黑料社区| 精品视频一区二区三区免费| 手机在线免费av| 人禽交欧美网站免费| 激情综合色播五月| 日韩毛片在线视频| 伊人久久久久久久久久| 亚洲性视频在线| 日本精品久久久久中文字幕| 中文字幕中文字幕一区| 黄色成人一级片| 国产欧美 在线欧美| 亚洲第一毛片| 美女av免费看| 亚洲国产精品久久久久秋霞蜜臀| 成人日韩精品| 久久成人福利视频| 中文字幕不卡在线| 欧美一区二区在线观看视频| 国产精品视频yy9099| 亚洲毛片av| 国产真实乱在线更新| 亚洲欧美一区二区三区在线| 韩国三级成人在线| 黄色a级片免费| 一区二区三区成人在线视频| 成人欧美亚洲| 国产中文一区二区| 国产精品99久久久久久宅男|