婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL多表鏈接查詢核心優化

MySQL多表鏈接查詢核心優化

熱門標簽:地圖標注專員入駐 如何辦理400客服電話 西藏地圖標注改進點 安陽手機自動外呼系統原理是什么 地圖標注什么軟件好用 外呼系統線路經常出問題嗎 神行者百貨商場地圖標注 地圖標注百度競價 外呼系統怎樣才能不封號

概述

在一般的項目開發中,對數據表的多表查詢是必不可少的。而對于存在大量數據量的情況時(例如百萬級數據量),我們就需要從數據庫的各個方面來進行優化,本文就先從多表查詢開始。其他優化操作,后續另外更新,敬請關注。

數據背景

現假設有一個中學學校,學校中的年級有一年級、二年級、三年級,每個年級有兩個班級。分別為101、102、201、202、301、302.

現在我們要為這個學校建立一個考試成績統計系統。為此,我們對數據庫的設計畫了如下ER圖:

根據ER圖,我們設計了數據表,結構如下:
class 班級表:

+------------+---------+------+-----+---------+----------------+
| Field      | Type    | Null | Key | Default | Extra          |
+------------+---------+------+-----+---------+----------------+
| id         | int(11) | NO   | PRI | NULL    | auto_increment |
| class_name | int(11) | NO   |     | NULL    |              |
| master_id  | int(11) | YES  |     | NULL    |                |
| is_key     | int(11) | NO   |     | NULL    |                   |
+------------+---------+------+-----+---------+----------------+

student 學生表:

+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| id         | int(11)     | NO   | PRI | NULL    | auto_increment |
| school_id  | int(11)     | NO   |     | NULL    |                |
| name       | varchar(30) | NO   |     | NULL    |                |
| sex        | int(11)     | NO   |     | NULL    |                |
| age        | int(11)     | NO   |     | NULL    |                |
| class_name | int(11)     | NO   |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+

course 課程表:

+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| id           | int(11)     | NO   | PRI | NULL    | auto_increment |
| course_name  | varchar(10) | NO   |     | NULL    |                |
| grade        | int(11)     | NO   |     | NULL    |                |
| president_id | int(11)     | YES  |     | NULL    |                |
| is_neces     | int(11)     | NO   |     | NULL    |                |
| credit       | int(11)     | NO   |     | NULL    |                |
| class_name   | int(11)     | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+

score 成績表:

+-----------+---------+------+-----+---------+----------------+
| Field     | Type    | Null | Key | Default | Extra          |
+-----------+---------+------+-----+---------+----------------+
| id        | int(11) | NO   | PRI | NULL    | auto_increment |
| course_id | int(11) | NO   |     | NULL    |                |
| school_id | int(11) | NO   |     | NULL    |                |
| score     | int(11) | YES  |     | NULL    |                |
+-----------+---------+------+-----+---------+----------------+

注:關于本文的數據庫數據大家可以在文章最下方的相關下載中獲取。資源鏈接中有兩個版本的數據庫,school.sql為初始數據庫,school_2.sql為優化后的數據庫。

連接(JOIN)簡介

內連(INNER JOIN)

INNER JOIN 關鍵字在表中存在至少一個匹配時返回行。

我們也用下面的交集維恩圖來描述內連操作:

上面的維恩圖只是表達了一個有限制情況(即存在JOIN ON),而對于沒有約束的情況下,其實就是一個笛卡爾積運算。

*注:**INNER JOIN 與 JOIN 是相同的。一般情況下,在SQL語句中可以省略*INNER關鍵字。

左連接(LEFT JOIN)

LEFT JOIN 關鍵字從左表(table1)返回所有的行,即使右表(table2)中沒有匹配。如果右表中沒有匹配,則結果為 NULL。

使用維恩圖描述內連操作:

對于上面結果為 NULL的這一條,通過對實際測試的數據表進行操作,得到如下的測試結果:

+------------+-------+
| class_name | name  |
+------------+-------+
|        202 | NULL  |
|        301 | Bob   |
|        302 | Alice |
+------------+-------+

右連接(RIGHT JOIN)

RIGHT JOIN 關鍵字從右表(table2)返回所有的行,即使左表(table1)中沒有匹配。如果左表中沒有匹配,則結果為 NULL。

注:右連接可以理解成左連接的對稱互補,詳細說明可參見左連接。

全連(FULL JOIN)

FULL OUTER JOIN 關鍵字只要左表(table1)和右表(table2)其中一個表中存在匹配,則返回行.

FULL OUTER JOIN 關鍵字結合了 LEFT JOIN 和 RIGHT JOIN 的結果。

聯合(UNION)

UNION 操作符用于合并兩個或多個 SELECT 語句的結果集。

請注意,UNION 內部的每個 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每個 SELECT 語句中的列的順序必須相同。

MySQL的JOIN實現原理

在MySQL 中,只有一種Join 算法,就是大名鼎鼎的Nested Loop Join,他沒有其他很多數據庫所提供的Hash Join,也沒有Sort Merge Join。顧名思義,Nested Loop Join 實際上就是通過驅動表的結果集作為循環基礎數據,然后一條一條的通過該結果集中的數據作為過濾條件到下一個表中查詢數據,然后合并結果。如果還有第三個參與Join,則再通過前兩個表的Join 結果集作為循環基礎數據,再一次通過循環查詢條件到第三個表中查詢數據,如此往復。
                                       – 《MySQL性能調優與架構設計》

多表查詢實戰

查詢各個班級的班長姓名

優化分析

對于這個多表的查詢使用where是可以很好地完成查詢,而查詢的結果從表面上看,完全沒什么問題,如下:

+------------+---------+
| class_name | name    |
+------------+---------+
|        101 | William |
|        102 | Peter   |
|        201 | Judy    |
|        202 | Polly   |
|        301 | Grace   |
|        302 | Sunny   |
+------------+---------+

可是,由于我們使用的是where,這個與內連接在有條件限制的情況下是一樣的,其維恩圖也可以一并參考。可是,如果現在我們假設,有一個新的班級303,或是這個303的班級暫時還沒有班長。這個時候通過where就無法完成查詢了。上面的結果中就已經很好地給出解釋。

這個時候,我們就需要通過外連接中的左連接(如果采用右連接,那么相應的表位置也要進行替換)來進行查詢了。在左連的查詢中,因為是包含了”左表“的全部行,所以對于未選出班長的303來說,這個很有必要。采用左連操作的結果如下:

+------------+---------+
| class_name | name    |
+------------+---------+
|        101 | William |
|        102 | Peter   |
|        201 | Judy    |
|        202 | Polly   |
|        301 | Grace   |
|        302 | Sunny   |
|        303 | NULL    |
+------------+---------+

SQL展示

樸素的WHERE

SELECT cl.class_name, st.name
FROM class cl, student st
WHERE cl.master_id=st.school_id;

INNER JOIN

SELECT cl.class_name, st.name
FROM class cl
JOIN student st
ON cl.master_id=st.school_id;

LEAF JOIN

SELECT cl.class_name, st.name
FROM class cl
LEFT JOIN student st
ON cl.master_id=st.school_id;

RIGHT JOIN

SELECT cl.class_name, st.name
FROM student st
RIGHT JOIN class cl
ON cl.master_id=st.school_id;

利用 EXPLAIN 檢查優化器

通過EXPLAIN我們分別檢查上面WHERE語句和LEFT JOIN的優化過程。結果如下:

WHERE

+----+-------------+-------+------+---------------+------+---------+------+------+--------------------------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra                          |
+----+-------------+-------+------+---------------+------+---------+------+------+--------------------------------+
|  1 | SIMPLE      | cl    | ALL  | NULL          | NULL | NULL    | NULL |    7 |                                |
|  1 | SIMPLE      | st    | ALL  | NULL          | NULL | NULL    | NULL |  301 | Using where; Using join buffer |
+----+-------------+-------+------+---------------+------+---------+------+------+--------------------------------+

LEFT JOIN

+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
|  1 | SIMPLE      | cl    | ALL  | NULL          | NULL | NULL    | NULL |    7 |       |
|  1 | SIMPLE      | st    | ALL  | NULL          | NULL | NULL    | NULL |  301 |       |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+

對于上面的兩個結果,我們可以看到有一個很明顯的區別在于Extra。

Using where說明進行了where的過濾操作,Using join buffer說明進行join緩存。

從上面的結果中,還可以看到每種情況的兩種查詢操作都是經過了全表掃描。而這對于大量數據而言是很不利的。

現在,我們可以為被驅動表的join字段添加索引,再對其進行EXPLAIN檢查。

添加索引

ALTER TABLE student ADD INDEX index_school_id (school_id);

通過EXPLAIN我們分別檢查上面WHERE語句和LEFT JOIN的優化過程。結果如下:

WHERE

+----+-------------+-------+------+-----------------+-----------------+---------+---------------------+------+-------+
| id | select_type | table | type | possible_keys   | key             | key_len | ref                 | rows | Extra |
+----+-------------+-------+------+-----------------+-----------------+---------+---------------------+------+-------+
|  1 | SIMPLE      | cl    | ALL  | NULL            | NULL            | NULL    | NULL                |    7 |       |
|  1 | SIMPLE      | st    | ref  | index_school_id | index_school_id | 4       | school.cl.master_id |    1 |       |
+----+-------------+-------+------+-----------------+-----------------+---------+---------------------+------+-------+

LEFT JOIN

+----+-------------+-------+------+-----------------+-----------------+---------+---------------------+------+-------+
| id | select_type | table | type | possible_keys   | key             | key_len | ref                 | rows | Extra |
+----+-------------+-------+------+-----------------+-----------------+---------+---------------------+------+-------+
|  1 | SIMPLE      | cl    | ALL  | NULL            | NULL            | NULL    | NULL                |    7 |       |
|  1 | SIMPLE      | st    | ref  | index_school_id | index_school_id | 4       | school.cl.master_id |    1 |       |
+----+-------------+-------+------+-----------------+-----------------+---------+---------------------+------+-------+

現在,可以很明顯地看出rows列的數值,在被驅動表處都是1,這大降低了查詢的復雜度。而且對于type列,也從一開始的ALL變成了現在的ref。還有一些其他的列也被修改了。

查詢番外

根據學號查詢一個學生的成績單

WHERE 查詢

EXPLAIN SELECT st.name, co.course_name, sc.score
FROM student st, score sc, course co
WHERE sc.school_id=st.school_id
AND co.id=sc.course_id
AND st.school_id=100005;

JOIN 查詢

EXPLAIN SELECT st.name, co.course_name, sc.score
FROM student st
JOIN score sc ON sc.school_id=st.school_id
JOIN course co ON co.id=sc.course_id
WHERE st.school_id=100005;

結果

+----+-------------+-------+--------+---------------------------------------+--------------------+---------+---------------------+------+-------+
| id | select_type | table | type   | possible_keys                         | key                | key_len | ref                 | rows | Extra |
+----+-------------+-------+--------+---------------------------------------+--------------------+---------+---------------------+------+-------+
|  1 | SIMPLE      | st    | ref    | index_school_id                       | index_school_id    | 4       | const               |    1 |       |
|  1 | SIMPLE      | sc    | ref    | index_school_id_sc,index_course_id_sc | index_school_id_sc | 4       | const               |    3 |       |
|  1 | SIMPLE      | co    | eq_ref | PRIMARY                               | PRIMARY            | 4       | school.sc.course_id |    1 |       |
+----+-------------+-------+--------+---------------------------------------+--------------------+---------+---------------------+------+-------+

優化總結

  • 對于要求全面的結果時,我們需要使用連接操作(LEFT JOIN / RIGHT JOIN / FULL JOIN);
  • 不要以為使用MySQL的一些連接操作對查詢有多么大的改善,核心是索引;
  • 對被驅動表的join字段添加索引;

SQL語句表

創建數據庫

CREATE DATABASE school;

創建數據表

學生表

CREATE TABLE student(
id INT NOT NULL AUTO_INCREMENT, /* 學生表id */
school_id INT(11) NOT NULL, /* 學號 */
name VARCHAR(30) NOT NULL, /* 姓名 */
sex INT NOT NULL, /* 性別 */
age INT NOT NULL, /* 年齡 */
class_name INT NOT NULL, /* 班級名稱 */
PRIMARY KEY (id) /* 學生表主鍵 */
);
INSERT INTO student(school_id, name, sex, age, class_name) VALUES(100005, 'Bob', 1, 17, 301);

班級表

CREATE TABLE class(
id INT NOT NULL AUTO_INCREMENT, /* 班級表id */
class_name INT NOT NULL, /* 班級名稱 */
master_id INT, /* 班長id */
is_key INT NOT NULL, /* 是否重點班級 */
PRIMARY KEY (id) /* 班級表主鍵 */
);
INSERT INTO class(class_name, master_id, is_key) VALUES(301, 100001, 1);

課程表

CREATE TABLE course(
id INT NOT NULL AUTO_INCREMENT, /* 課程表id */
course_name VARCHAR(10) NOT NULL, /* 課程名稱 */
grade INT NOT NULL, /* 當前課程所屬年級 */
president_id INT, /* 課代表id */
is_neces INT NOT NULL, /* 是否必修課 */
credit INT NOT NULL, /* 學分 */
PRIMARY KEY (id) /* 課程表主鍵 */
);
INSERT INTO course(course_name, grade, president_id, is_neces, credit) VALUES('math', 3, 100214, 1, 4);
ALTER table course ADD column class_name INT;

成績表

CREATE TABLE score(
id INT NOT NULL AUTO_INCREMENT, /* 成績表id */
course_id INT NOT NULL, /* 課程id */
school_id INT NOT NULL, /* 學號 */
score INT, /* 考試成績 */
PRIMARY KEY (id) /* 成績表主鍵 */
);
INSERT INTO score(course_id, school_id, score) VALUES(1, 100005, 88);

導入導出

/* 導出數據庫 */
MYSQLDUMP -u root -p school > F:/Data/MySQL/school.sql
/* 導入數據庫 */
SOURCE /root/upload/school.sql;

索引操作

/* 添加索引 */
ALTER TABLE class ADD INDEX index_master_id (master_id);
/* 刪除索引 */
DROP INDEX index_name ON talbe_name;

查詢實戰

查詢所有課程名稱

SELECT course_name FROM course GROUP BY course_name;

查詢一個學生全部課程

/* 子查詢 */
SELECT course_name FROM course WHERE id in (SELECT course_id FROM score WHERE school_id=100005);

統計每個班級有多少學生

SELECT class_name, count(*) FROM student GROUP BY class_name;

根據學號查詢一個學生的成績單

/* WHERE */
SELECT st.name, co.course_name, sc.score
FROM student st, score sc, course co
WHERE sc.school_id=st.school_id
AND co.id=sc.course_id
AND st.school_id=100005;
/* JOIN */
SELECT st.name, co.course_name, sc.score
FROM student st
JOIN score sc ON sc.school_id=st.school_id
JOIN course co ON co.id=sc.course_id
AND st.school_id=100005;

查詢各個班級的班長姓名

/* WHERE */
SELECT cl.class_name, st.name
FROM class cl, student st
WHERE cl.master_id=st.school_id;
/* 子查詢 */
SELECT st.class_name, st.name
FROM student st
WHERE st.school_id in
(SELECT master_id FROM class);
/* JOIN */
SELECT cl.class_name, st.name
FROM class cl
JOIN student st
ON cl.master_id=st.school_id;
/* LEFT JOIN */
SELECT cl.class_name, st.name
FROM class cl
LEFT JOIN student st
ON cl.master_id=st.school_id;
/* RIGHT JOIN */
SELECT cl.class_name, st.name
FROM student st
RIGHT JOIN class cl
ON cl.master_id=st.school_id;

其他查詢

SELECT name, class_name FROM student GROUP BY class_name
UNION ALL
SELECT id, class_name FROM class;

原文鏈接:http://blog.csdn.net/lemon_tree12138/article/details/50921193

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 詳解MySQL數據庫--多表查詢--內連接,外連接,子查詢,相關子查詢
  • MySQL左聯多表查詢where條件寫法示例
  • 解析Mysql多表查詢的實現
  • MySQL 多表查詢實現分析
  • MySQL中基本的多表連接查詢教程
  • 詳解Mysql多表聯合查詢效率分析及優化
  • 淺談mysql中多表不關聯查詢的實現方法
  • MySQL多表數據記錄查詢詳解
  • mysql多表連接查詢實例講解
  • MySQL多表查詢實例詳解【鏈接查詢、子查詢等】

標簽:雞西 酒泉 阜陽 張掖 衡水 貴港 AXB 萍鄉

巨人網絡通訊聲明:本文標題《MySQL多表鏈接查詢核心優化》,本文關鍵詞  MySQL,多表,鏈接,查詢,核心,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL多表鏈接查詢核心優化》相關的同類信息!
  • 本頁收集關于MySQL多表鏈接查詢核心優化的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    中文字幕一区二区三区精华液| 成人国产精品免费观看动漫| 色婷婷精品大在线视频| 日韩午夜精品视频| 91在线观看美女| 六月婷婷色综合| 91黄视频在线观看| 久久久不卡网国产精品二区| 欧美日韩大陆一区二区| 另类小说综合欧美亚洲| 91精品国产综合久久精品app| 久久91精品国产91久久小草| 一本久道久久综合中文字幕| 国产中文一区二区三区| 免费av成人在线| 日韩写真欧美这视频| 欧美日韩一级片在线观看| 成人精品视频网站| 懂色av一区二区三区免费看| 一区二区在线免费观看| 奇米色一区二区| 日韩一区二区三区视频| wwwwww.欧美系列| 久久综合久久久久88| 日韩三级电影网址| 69精品人人人人| av中文字幕不卡| 成人午夜电影小说| 欧美大片日本大片免费观看| 国产精品18久久久久久久久 | 麻豆精品精品国产自在97香蕉| 久久久电影一区二区三区| 天天综合日日夜夜精品| 国产精品动漫网站| 久久久久一区二区三区四区| 成人av动漫网站| 极品尤物av久久免费看| 久久色视频免费观看| 婷婷综合久久一区二区三区| 91久久线看在观草草青青| 国产精品看片你懂得| 欧美性猛交xxxx乱大交退制版| 亚洲一区免费在线观看| 久久伊99综合婷婷久久伊| 99视频一区二区| 蜜臀a∨国产成人精品| 亚洲午夜视频在线观看| 久久亚洲免费视频| 欧美军同video69gay| 国产精品1024久久| 九一久久久久久| 极品尤物av久久免费看| 美女视频黄a大片欧美| 亚洲超丰满肉感bbw| 一区二区三区美女视频| 亚洲天堂av一区| 国产精品久久久久久久裸模| 成人永久免费视频| 一区二区三区波多野结衣在线观看| 国产亚洲精品7777| 国产午夜亚洲精品羞羞网站| 国产中文一区二区三区| 国产一区二区伦理| 午夜精品一区二区三区免费视频 | 国产成人精品一区二区三区网站观看 | 狠狠色伊人亚洲综合成人| 亚洲国产一区二区三区青草影视| 一区二区三区国产| 国产一区二区久久| 日韩一区二区三区av| 国产精品美女久久久久aⅴ | 日本精品一级二级| 久久一区二区三区四区| 一区二区三区欧美视频| 亚洲风情在线资源站| 国产一区在线精品| 91丨九色porny丨蝌蚪| 欧美一级高清片在线观看| 中文字幕中文在线不卡住| 日韩av二区在线播放| 国产成人av福利| 精品国产乱码久久久久久夜甘婷婷 | 久久av中文字幕片| 国产伦精一区二区三区| 麻豆精品一区二区av白丝在线| 日韩在线一区二区三区| 国产成人在线免费观看| 欧美午夜一区二区三区| 精品三级在线观看| 国产另类ts人妖一区二区| 欧美日韩不卡视频| 91精品国产91热久久久做人人| 久久久91精品国产一区二区精品 | 中文字幕一区不卡| 麻豆精品国产传媒mv男同| 精品视频在线看| 亚洲激情第一区| 91老师片黄在线观看| 成人欧美一区二区三区在线播放| 亚洲狠狠丁香婷婷综合久久久| 国产精品资源在线观看| 欧美电影精品一区二区| 日韩不卡在线观看日韩不卡视频| 欧美在线视频全部完| 亚洲精品国产无天堂网2021| 国产精品免费av| 狠狠色狠狠色综合日日91app| 在线精品视频小说1| 尤物av一区二区| 九九**精品视频免费播放| 日韩美女视频在线| 中文字幕 久热精品 视频在线| 国产精品自拍av| 亚洲免费观看高清完整版在线观看熊| 成人黄色a**站在线观看| 国产精品久线观看视频| 91免费国产在线| 免费在线看一区| 久久久噜噜噜久久中文字幕色伊伊| 狠狠色狠狠色综合系列| 国产欧美日韩综合| 欧美亚洲动漫另类| 国产精品久久久久久久久搜平片 | 成人av免费在线观看| 三级精品在线观看| 精品国产91洋老外米糕| 色婷婷国产精品| 亚洲综合免费观看高清完整版| 日韩一卡二卡三卡国产欧美| 成人免费毛片aaaaa**| 亚洲小说欧美激情另类| 精品欧美乱码久久久久久| 狠狠色狠狠色综合| 蜜桃精品在线观看| 欧美韩国日本一区| 欧美mv和日韩mv国产网站| 91热门视频在线观看| 不卡的av电影在线观看| 国产成人亚洲精品狼色在线| 石原莉奈在线亚洲三区| 亚洲在线一区二区三区| 亚洲精品免费一二三区| 亚洲色图在线播放| 欧美国产成人在线| 国产欧美精品一区aⅴ影院| 精品少妇一区二区三区免费观看 | 丁香五精品蜜臀久久久久99网站| 午夜精品123| 亚洲一区二区精品久久av| 国产午夜一区二区三区| 国产三级欧美三级| 国内精品伊人久久久久av影院| 一区二区三区不卡视频| 人人狠狠综合久久亚洲| 欧美一区二区精品久久911| 国产成人av一区| 国产在线视频不卡二| 成人h动漫精品一区二| 91香蕉视频污| 日韩女优毛片在线| av亚洲产国偷v产偷v自拍| 91久久精品国产91性色tv| 欧美日韩亚州综合| 日韩美女啊v在线免费观看| 亚洲一区二区黄色| 99久久精品免费观看| 欧美大片顶级少妇| 亚洲欧美欧美一区二区三区| 国产一区二区三区视频在线播放| 欧美性色黄大片手机版| 中文一区二区完整视频在线观看| 欧美国产精品劲爆| 韩国精品主播一区二区在线观看| 日韩av电影免费观看高清完整版| 成人爱爱电影网址| 欧美亚洲免费在线一区| 中文字幕第一页久久| 国产综合久久久久久鬼色| 精品美女被调教视频大全网站| 三级成人在线视频| 欧美一级在线视频| 日韩精品视频网站| 制服丝袜中文字幕亚洲| 天天操天天干天天综合网| 欧美一卡2卡3卡4卡| 国产精品综合一区二区三区| 久久天天做天天爱综合色| 国产精品一二三| 亚洲一二三级电影| 日韩一本二本av| 成人午夜av电影| 亚洲视频狠狠干| 欧美吻胸吃奶大尺度电影 | 7777女厕盗摄久久久| 国产在线视频精品一区| 色综合天天性综合| 欧美成人精品高清在线播放| 天天影视涩香欲综合网| 国产亚洲欧美激情| 欧美一区二区三区免费观看视频 |