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

一文弄懂Join語句優化

數據庫 MySQL
從 MySQL 8.0.20 開始,MySQL 不再使用 Block Nested-Loop Join 算法,并且在以前使用 Block Nested-Loop Join 算法的所有情況下都使用 Hash Join 優化。

這一篇文章就來介紹一下關聯查詢的優化,文章有點長,請耐心看完,有問題歡迎討論指正。

1 關聯查詢的算法特性總結

要想弄懂關聯查詢的優化,就必須先知道關聯查詢相關的算法:

Join算法

解釋

Simple Nested-Loop Join算法

遍歷驅動表中的每一行,每一行再到被驅動表中全表掃描,如果滿足關聯條件,則返回結果

Index Nested-Loop Join算法

遍歷驅動表中的每一行,都通過索引找到被驅動表中關聯的記錄,如果滿足關聯條件,則返回結果

Block Nested-Loop Join算法

把驅動表的數據讀入到 join_buffer 中,把被驅動表每一行取出來跟 join_buffer 中的數據做對比,如果滿足 join 條件,則返回結果

Hash Join算法

將驅動表的數據加載到內存中構建哈希表,然后逐行讀取被驅動表的數據,并通過哈希函數將連接條件的列的值映射為哈希值,查找匹配的哈希值,最后返回匹配的結果給客戶端,跟Block Nested-Loop Join算法類似,但是不需要將被驅動表的數據塊寫入內存或磁盤,更少的IO以及更節省資源

Batched Key Access算法

將驅動表中相關列放入 join_buffer 中

批量將關聯字段的值發送到 Multi-Range Read(MRR) 接口

MRR 通過接收到的值,根據其對應的主鍵 ID 進行排序,然后再進行數據的讀取和操作

返回結果給客戶端

2 Simple Nested-Loop Join算法

圖片圖片

循環驅動表中的每一行

再到被驅動表找到滿足關聯條件的記錄

因為關聯字段沒索引,所以在被驅動表里的查詢需要全表掃描

這種方法邏輯簡單,但是效率很差

比如驅動表數據量是 m,被驅動表數據量是 n,則掃描行數為 m * n

當然,好在,MySQL也沒有采用這種算法,即使關聯字段沒索引,也會采用Block Nested-Loop Join或者Hash Join,等下會細說。

3 Index Nested-Loop Join算法

剛才我們說的是關聯字段沒索引的情況,假如關聯字段有索引,就會采用Index Nested-Loop Join算法(一般簡寫成:NLJ)

圖片圖片

一次一行循環地從第一張表(稱為驅動表)中讀取行,在這行數據中取到關聯字段,根據關聯字段在另一張表(被驅動表)里,通過索引匹配,取出滿足條件的行,然后取出兩張表的結果合集。

為了方便理解,我們會結合實驗進行講解,先來創建測試表并寫入測試數據:

use martin; 
drop table if exists t1; 
CREATE TABLE `t1` (
`id` int NOT NULL auto_increment,
`a` int DEFAULT NULL,
`b` int DEFAULT NULL,
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '記錄創建時間',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
COMMENT '記錄更新時間',
PRIMARY KEY (`id`),
KEY `idx_a` (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


drop procedure if exists insert_t1; 


delimiter ;;
create procedure insert_t1()
begin
declare i int; 
set i=1;
while(i<=10000)do
insert into t1(a,b) values(i, i); 
set i=i+1; 
end while;
end;;
delimiter ; 
call insert_t1(); 


drop table if exists t2; 
create table t2 like t1; 
insert into t2 select * from t1 limit 100;

我們來看一個例子:

explain select * from t1 inner join t2 on t1.a = t2.a;

Tips:表 t1 和表 t2 中的 a 字段都有索引。

執行計劃如下:

圖片圖片

從執行計劃中可以看到這些信息:

驅動表是 t2,被驅動表是 t1。原因是:explain 分析 join 語句時,在第一行的就是驅動表;選擇 t2 做驅動表的原因:如果沒固定連接方式(比如沒加 straight_join),優化器會優先選擇小表做驅動表。所以使用 inner join 時,前面的表并不一定就是驅動表。

使用了 NLJ。原因是:一般 join 語句中,如果執行計劃 Extra 中未出現 Using join buffer (***);則表示使用的 join 算法是 NLJ。

4 Block Nested-Loop Join算法

如果被驅動表的關聯字段沒索引,在MySQL 8.0.20版本之前,就會使用 Block Nested-Loop Join(簡稱:BNL)

圖片圖片

Block Nested-Loop Join(BNL) 算法的思想是:把驅動表的數據讀入到 join_buffer 中,然后掃描被驅動表,把被驅動表每一行取出來跟 join_buffer 中的數據做對比,如果滿足 join 條件,則返回結果給客戶端。

我們一起看看下面這條 SQL 語句:

select * from t1 inner join t2 on t1.b = t2.b;

Tips:表 t1 和表 t2 中的 b 字段都沒有索引

在 MySQL 5.7 版本下的執行計劃如下:

圖片圖片

在 Extra 發現 Using join buffer (Block Nested Loop),這個就說明該關聯查詢使用的是 BNL 算法。

在 MySQL 8.0.25 版本下的執行計劃如下:

圖片圖片

在 Extra 發現 Using join buffer (hash join),因為前面提到,從 MySQL 8.0.20 開始,哈希連接替換了塊嵌套循環。

5 Hash Join算法

從 MySQL 8.0.20 開始,MySQL 不再使用 Block Nested-Loop Join 算法,并且在以前使用 Block Nested-Loop Join 算法的所有情況下都使用 Hash Join 優化。

圖片圖片

核心思想是將驅動表的數據加載到內存中構建哈希表

然后逐行讀取被驅動表的數據,并通過哈希函數將連接條件的列的值映射為哈希值,去之前構建的Hash表查找匹配的記錄

一旦在Hash表中找到匹配的記錄,對這些記錄進行一一比較,得出最終的Join結果

跟Block Nested-Loop Join算法類似,但是不需要將被驅動表的數據塊寫入內存或磁盤,更少的IO以及更節省資源

6 Batched Key Access算法

在學了 NLJ 和 BNL 算法后,你是否有個疑問,如果把 NLJ 與 BNL 兩種算法的一些優秀的思想結合,是否可行呢?

比如 NLJ 的關鍵思想是:被驅動表的關聯字段有索引。

而 BNL 的關鍵思想是:把驅動表的數據批量提交一部分放到 join_buffer 中。

從 MySQL 5.6 開始,確實出現了這種集 NLJ 和 BNL 兩種算法優點于一體的新算法:Batched Key Access(BKA)。

圖片圖片

其原理是:

將驅動表中相關列批量放入 join_buffer 中

批量將關聯字段的值發送到 Multi-Range Read(MRR) 接口

MRR 通過接收到的值,根據其對應的主鍵 ID 進行排序,然后再進行數據的讀取和操作

返回結果給客戶端。

7 補充下MRR相關知識

當表很大并且沒有存儲在緩存中時,使用輔助索引上的范圍掃描讀取行可能導致對表有很多隨機訪問。

而 Multi-Range Read 優化的設計思路是:查詢輔助索引時,對查詢結果先按照主鍵進行排序,并按照主鍵排序后的順序,進行順序查找,從而減少隨機訪問磁盤的次數。

使用 MRR 時,explain 輸出的 Extra 列顯示的是 Using MRR。

控制MRR的參數

optimizer_switch 中 mrr_cost_based 參數的值會影響 MRR。

如果 mrr_cost_based=on,表示優化器嘗試在使用和不使用 MRR 之間進行基于成本的選擇。

如果 mrr_cost_based=off,表示一直使用 MRR。

更多 MRR 信息請參考官方手冊:https://dev.mysql.com/doc/refman/8.0/en/mrr-optimization.html。

8 BKA開啟

先來看下這條SQL的執行計劃:

explain select * from t1 inner join t2 on t1.a = t2.a;

圖片圖片

下面嘗試開啟 BKA :

set optimizer_switch='mrr=on,mrr_cost_based=off,batched_key_access=on';

這里對上面幾個參數做下解釋:

  • mrr=on 開啟 mrr
  • mrr_cost_based=off 不需要優化器基于成本考慮使用還是不使用 MRR,也就是一直使用 MRR
  • batched_key_access=on 開啟 BKA

然后再看 sql1 的執行計劃:

explain select * from t1 inner join t2 on t1.a = t2.a;

圖片圖片

在 Extra 字段中發現有 Using join buffer (Batched Key Access),表示確實變成了 BKA 算法。

9 優化關聯查詢

扯了這么多,我們就來講一下:究竟怎樣優化關聯查詢:

關聯字段添加索引

通過上面的內容,我們知道了 BNL、NLJ 和 BKA 的原理,因此讓 BNL(Block Nested-Loop Join)或者Hash Join變成 NLJ (Index Nested-Loop Join)或者 BKA(Batched Key Access),可以提高 join 的效率。我們來看下面的例子

我們構造出兩個算法對于的例子:

Block Nested-Loop Join 的例子:

select * from t1 join t2 on t1.b= t2.b;

需要 0.08 秒。

Index Nested-Loop Join 的例子:

select * from t1 join t2 on t1.a= t2.a;

只需要 0.01 秒。

再對比一下兩條 SQL 的執行計劃:

圖片圖片

前者掃描的行數是 100 和 9963。

對比執行時間和執行計劃,再結合在本節開始講解的兩種算法的執行流程,很明顯 Index Nested-Loop Join 效率更高。

因此建議在被驅動表的關聯字段上添加索引,讓 BNL或者Hash Join變成 NLJ 或者 BKA ,可明顯優化關聯查詢。

選擇小表作為驅動表

從上面幾種Join算法,也能看出來,驅動表需要全表掃描,再存放在內存中

如果小表是驅動表,那遍歷的行也會更少。

來舉個例子,看下大小表做驅動表執行計劃的對比:

我們來看下以 t2 為驅動表的 SQL:

select * from t2 straight_join t1 on t2.a = t1.a;

這里使用 straight_join 可以固定連接方式,讓前面的表為驅動表。

再看下以 t1 為驅動表的 SQL:

select * from t1 straight_join t2 on t1.a = t2.a;

我們對比下兩條 SQL 的執行計劃:

圖片圖片

明顯前者掃描的行數少(注意關注 explain 結果的 rows 列),所以建議小表驅動大表。

當然,如果是普通的join語句,一般不需要我們去處理,優化器默認也會選擇小表做為驅動表。

數據集較大可以采用BKA優化

BKA算法采用批量處理機制,利用索引快速定位匹配記錄,適合大型數據集的Join操作

版本升級

前面也提到了,如果被驅動表的關聯字段沒索引,在MySQL 8.0.20版本之前,就會使用 Block Nested-Loop Join(簡稱:BNL),

從 MySQL 8.0.20 開始,MySQL 不再使用 Block Nested-Loop Join 算法,并且在以前使用 Block Nested-Loop Join 算法的所有情況下都使用 Hash Join 優化。

相對于Block Nested-Loop Join算法,Hash Join不需要將被驅動表的數據塊寫入內存或磁盤,使用更少的IO以及更節省資源。

所以,假如有條件,可以升級到8.0.20之后的版本。

責任編輯:武曉燕 來源: MySQL數據庫聯盟
相關推薦

2022-08-09 09:10:43

Kubernetes容器

2023-09-18 08:02:45

CSS布局屬性

2023-10-26 16:27:50

前端 WebCSS開發

2022-09-01 08:01:56

Pythongunicorn

2024-05-09 10:11:30

2023-12-12 07:31:51

Executors工具開發者

2023-03-27 17:58:34

MySQL加鎖間隙鎖

2021-06-02 05:43:36

比特幣虛擬貨幣區塊鏈

2022-09-05 09:25:53

KubernetesService

2023-04-04 08:01:47

2023-03-30 08:52:40

DartFlutter

2022-08-03 08:01:16

CDN網站服務器

2022-01-04 08:54:32

Redis數據庫數據類型

2022-09-09 10:00:13

KubernetesConfigMap

2024-10-16 10:11:52

2021-12-20 07:59:07

Go語言結構體

2020-10-14 10:21:02

算法算法思想數據

2022-02-23 08:55:06

數據遷移分庫分表數據庫

2022-08-01 14:59:57

Web前端后端

2024-02-23 19:11:13

C++編程開發
點贊
收藏

51CTO技術棧公眾號

91大神在线观看线路一区| 无码人妻精品一区二区50| 欧美一区在线观看视频| 婷婷六月综合亚洲| 中文字幕欧美日韩一区二区三区| 亚洲国产成人在线观看| 久热国产精品| 欧美激情视频一区二区三区不卡| 欧美熟妇一区二区| 欧美h版在线观看| 色婷婷综合中文久久一本| 黑人巨大国产9丨视频| 飘雪影视在线观看免费观看 | 亚洲色成人一区二区三区小说| av在线免费一区| 成人午夜看片网址| 国产一区深夜福利| 亚洲免费黄色网址| 欧美日韩中文| 俺也去精品视频在线观看| 成年人网站免费看| 国产精品网站在线看| 欧美精选午夜久久久乱码6080| 男女午夜激情视频| a级大胆欧美人体大胆666| 国产精品乱人伦| 欧美日产一区二区三区在线观看| 亚洲成人一级片| 久久99国产精品麻豆| 日韩av片免费在线观看| 国产精品视频免费播放| 狠狠色丁香久久综合频道| 久久天天躁夜夜躁狠狠躁2022| 国产免费无遮挡吸奶头视频| 欧美一级一片| 亚洲国产成人精品久久| 国产精品一级无码| 日韩08精品| 91麻豆精品国产自产在线观看一区 | 亚洲免费成人av在线| 日韩视频一区二区| 蜜臀一区二区三区精品免费视频 | 国产欧美日韩伦理| av中文字幕播放| 国产在线精品一区二区夜色| 国产美女主播一区| 中文字幕乱码中文字幕| 日韩成人一区二区三区在线观看| 欧美综合在线观看| 无码人妻aⅴ一区二区三区有奶水| 亚洲黄色三级| 国产做受69高潮| 久久久精品人妻一区二区三区四| 在线看片不卡| 久久99国产精品自在自在app| 三级在线观看免费大全| 亚洲欧美日韩高清在线| 欧美成人精品三级在线观看| 日韩视频中文字幕在线观看| 欧美福利一区| 久久免费视频网站| 成人在线免费看视频| 国产精品入口66mio| 日本亚洲欧洲色α| 中文文字幕一区二区三三| 日本美女一区二区| 国产区精品视频| 国产xxxx在线观看| 成人va在线观看| 久久国产精品亚洲va麻豆| 久青草国产在线| 国产精品久久久久久久久久免费看| 一区二区精品在线| 污片在线免费观看| 狠狠久久五月精品中文字幕| 日本www.色| 精品视频一区二区三区在线观看| 精品国产乱码久久久久久久 | 理论电影国产精品| 国产一区二区激情| 国产又黄又粗又猛又爽的| 欧美成人69| 98视频在线噜噜噜国产| 国语对白做受69按摩| 国产精品中文欧美| 久久亚洲午夜电影| 免费网站成人| 天涯成人国产亚洲精品一区av| 免费在线激情视频| 日韩黄色三级| 日韩av中文字幕在线免费观看| 能直接看的av| 樱桃成人精品视频在线播放| 国产精品久久久av| 亚洲精品综合网| 国产精品美女久久久久av爽李琼| 中文字幕色呦呦| 在线观看网站免费入口在线观看国内| 欧美体内she精视频| 精品1卡二卡三卡四卡老狼| 国产免费播放一区二区| 欧美大学生性色视频| а中文在线天堂| 成人国产免费视频| 宅男一区二区三区| 芒果视频成人app| 精品国产污网站| 国产高清视频免费在线观看| 亚洲一区二区成人| 97人人模人人爽视频一区二区| 国产视频精品久久| 五月婷婷欧美视频| 手机av在线网站| 欧美艳星介绍134位艳星| 久久久噜噜噜久久久| 一级黄色免费片| 国产欧美一区二区精品忘忧草| 欧美精品卡一卡二| 激情综合五月| 色吧影院999| 无码人妻丰满熟妇精品区| 成人午夜免费电影| 免费的一级黄色片| 成人动漫视频在线观看| 尤物精品国产第一福利三区| 天天操中文字幕| 成人不卡免费av| 国产又粗又猛又爽又黄的网站| 91九色成人| 在线播放国产精品| 无码人妻av免费一区二区三区| 99亚偷拍自图区亚洲| 国产日韩亚洲欧美在线| 久久三级中文| 久久福利视频导航| 91福利免费视频| 国产精品久久久久久久久免费相片| 成人在线激情网| 中日韩免视频上线全都免费| 97视频在线播放| 婷婷五月综合久久中文字幕| 亚洲一区二区三区四区不卡| 国产精品二区视频| 一区在线视频| 国产欧美日本在线| 蜜桃视频www网站在线观看| 亚洲爱爱爱爱爱| 自拍偷拍欧美亚洲| heyzo一本久久综合| 日韩国产一级片| 欧美黑人做爰爽爽爽| 26uuu久久噜噜噜噜| 视频一区 中文字幕| 亚洲成a人片综合在线| 亚洲啪av永久无码精品放毛片 | av在线免费在线观看| 亚洲男人的天堂在线观看| 中文字幕在线视频精品| 91精品福利| 高清不卡一区二区三区| heyzo在线播放| 国产视频自拍一区| 欧美一级黄视频| 国产精品成人一区二区艾草| 色综合天天色综合| 综合激情网站| 精品日韩欧美| 成人精品一区二区三区电影| 日韩一级裸体免费视频| 亚洲第一色视频| 狠狠色狠色综合曰曰| 精品无码人妻一区二区免费蜜桃 | 激情久久久久久久| 国产一区在线免费| 激情黄产视频在线免费观看| 国产丝袜精品视频| 中文字幕一级片| 一区二区三区在线免费播放| 国产又黄又粗又猛又爽的视频 | 亚洲成av人片www| 亚洲一区二区三区蜜桃| 久久精品国产网站| 成人性做爰片免费视频| 美日韩黄色大片| 国产精品亚洲自拍| 18aaaa精品欧美大片h| 亚洲新中文字幕| 国产日韩精品suv| 亚洲香蕉伊在人在线观| 性猛交娇小69hd| 国产91精品精华液一区二区三区 | 伊人久久男人天堂| www.精品视频| 欧美色综合网站| 国产精品第108页| 国产精品少妇自拍| 日本护士做爰视频| 久久99热国产| 日韩在线xxx| 国产综合自拍| 一区二区三区不卡在线| 国产一级成人av| 成人国产精品久久久| 综合另类专区| 色综合91久久精品中文字幕 | 欧美人在线视频| 成人网视频在线观看| 亚洲国产高清福利视频| 国产精品无码免费播放| 欧美系列一区二区| 国产香蕉视频在线| 一区二区三区不卡视频| 91ts人妖另类精品系列| 国产三级欧美三级| 久久午夜夜伦鲁鲁片| 国产福利精品一区| 伊人网在线综合| 热久久免费视频| 美女av免费在线观看| 在线日本成人| 真人做人试看60分钟免费| 成人一二三区| 欧美亚州在线观看| 欧美日韩一区二区三区不卡视频| 91久久久久久| 国产激情精品一区二区三区| 国产精品亚洲美女av网站| 成人午夜精品| 国产精品va在线播放| 色多多在线观看| 97视频免费在线观看| 国产传媒av在线| 午夜精品理论片| 黑人极品ⅴideos精品欧美棵| 久久天天躁日日躁| 成人在线app| 麻豆国产精品va在线观看不卡| 欧美尤物美女在线| 久久精品视频在线| 免费黄色在线看| 久久九九国产精品怡红院| 黄在线免费看| 久久成人综合视频| 羞羞污视频在线观看| 欧美成人网在线| 黑人极品ⅴideos精品欧美棵| 欧美激情网友自拍| av免费不卡国产观看| 7m第一福利500精品视频| 三妻四妾的电影电视剧在线观看| 青青草99啪国产免费| 最新日韩三级| 国产精品视频久久| 高清在线一区二区| 成人欧美一区二区| 国产成人精品亚洲线观看| 国产中文一区二区| 精品在线91| 亚洲精品视频一二三| 久久久久久久久久久久久久久久久久| 99亚洲精品视频| 亚洲特级毛片| 日本三级免费观看| 麻豆久久久久久| 三级网站免费看| 99久久精品国产一区二区三区| 国产精品揄拍100视频| 中文文精品字幕一区二区| 成人免费视频国产免费观看| 亚洲一区二区三区爽爽爽爽爽| 香蕉免费毛片视频| 欧美中文字幕一区二区三区亚洲 | 国产一二精品视频| www.啪啪.com| 国产三级精品视频| 黄色一级片中国| 欧美性猛交xxxx| 一本色道久久综合精品婷婷| 欧美成人欧美edvon| 免费国产在线观看| 久久夜精品香蕉| 性国裸体高清亚洲| 国产日韩视频在线观看| 国语一区二区三区| 亚洲国内在线| 亚洲久久成人| 极品粉嫩美女露脸啪啪| 99久久精品情趣| 视频国产一区二区| 欧美性xxxxx| 国产情侣在线播放| 亚洲精品自拍第一页| 国产高清视频在线| 国内成人精品视频| 香蕉视频亚洲一级| 久久久精品久久久| 黄色免费在线观看| 97在线免费观看视频| 美女久久久久久| 国模精品娜娜一二三区| 久久亚洲成人| www一区二区www免费| 国产在线乱码一区二区三区| 受虐m奴xxx在线观看| 亚洲午夜激情网站| 亚洲一区二区三区高清视频| 亚洲精品动漫久久久久| av免费在线观看网址| 日韩免费在线观看视频| 亚洲性视频在线| 一区在线电影| 日韩国产欧美在线视频| 中国一级特黄录像播放| 亚洲精品中文字幕在线观看| 亚洲 小说区 图片区| 精品亚洲国产成av人片传媒| 日韩精品分区| 91在线免费网站| 欧美3p在线观看| 免费黄色一级网站| 久久精品一区蜜桃臀影院| 久久草视频在线| 欧美va在线播放| 国产剧情在线| 成人福利视频网| 99久久www免费| 日本中文字幕观看| 国产精品青草久久| 中文字幕视频一区二区| 在线播放亚洲激情| 最新欧美电影| 日韩免费中文专区| 日韩不卡手机在线v区| 亚洲国产天堂av| 色哟哟国产精品| 国产在线网站| 国产精品扒开腿做爽爽爽视频| 九九精品久久| 国产xxxxx在线观看| 2021久久国产精品不只是精品| 亚洲免费激情视频| 亚洲国产天堂久久国产91 | 亚洲怡红院在线| 国产精品美日韩| 亚洲一区精品在线观看| 日韩在线观看免费全集电视剧网站| 日韩av大片站长工具| 日韩高清在线播放| 免费在线观看日韩欧美| 国产又粗又硬视频| 欧美精品久久久久久久多人混战| 黄色一级片在线观看| 91国产在线免费观看| 亚洲国产国产亚洲一二三| 久久久久国产免费| 狠狠色香婷婷久久亚洲精品| 日本私人网站在线观看| 国产精品精品久久久| 99精品小视频| www.四虎精品| 欧美日韩亚洲视频一区| 国产在线91| 国产精品自在线| 欧美午夜不卡影院在线观看完整版免费| 亚洲美女精品视频| 欧美性黄网官网| aaa日本高清在线播放免费观看| 91九色国产社区在线观看| 国产精品大片| 中文幕无线码中文字蜜桃| 欧美午夜一区二区三区| 18网站在线观看| 精品国产综合区久久久久久| 久久久天天操| 国产午夜手机精彩视频| 亚洲激情视频在线| av亚洲一区二区三区| 欧美另类videosbestsex日本| 99精品热视频| 一卡二卡在线视频| 97精品久久久| 不卡一区2区| 国产污在线观看| 欧美日韩中文字幕一区| ririsao久久精品一区| 日韩三级电影免费观看| 国产成人亚洲综合a∨婷婷 | 久久一综合视频| 欧美风情第一页| 亚洲精品网站在线播放gif| 国产精品亚洲四区在线观看| 亚洲美免无码中文字幕在线| 国产精品不卡在线| 天堂av电影在线观看| 成人春色激情网| 天使萌一区二区三区免费观看| 青青草原免费观看| 中文字幕一区二区三区电影| 激情小说亚洲图片| 在线视频观看一区二区|