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

阿里規(guī)定超過(guò)3張表禁止JOIN,為啥?

開(kāi)發(fā) 后端 開(kāi)發(fā)工具
《阿里巴巴 Java 開(kāi)發(fā)手冊(cè)》里面寫(xiě)超過(guò)三張表禁止 join,這是為什么?

[[424463]]

圖片來(lái)自 包圖網(wǎng)

問(wèn)題分析

對(duì)這個(gè)結(jié)論,你是否有懷疑呢?也不知道是哪位先哲說(shuō)的不要人云亦云,今天我設(shè)計(jì) sql,來(lái)驗(yàn)證這個(gè)結(jié)論。(實(shí)驗(yàn)沒(méi)有從代碼角度分析,目前達(dá)不到。可以把 MySQL 當(dāng)一個(gè)黑盒,使用角度來(lái)驗(yàn)證這個(gè)結(jié)論)

驗(yàn)證結(jié)論的時(shí)候,會(huì)有很多發(fā)現(xiàn),各位往后看。

實(shí)驗(yàn)環(huán)境

VMware 10+Centos 7.4+MySQL 5.7.22 ,Centos 7 內(nèi)存 4.5G,4 核,50G 硬盤(pán)。MySQL 配置為 2G,特別說(shuō)明硬盤(pán)是 SSD。

我的實(shí)驗(yàn)

有 4 張表,student 學(xué)生表,teacher 老師表,course 課程表,sc 中間關(guān)系表,記錄了學(xué)生選修課程以及分?jǐn)?shù)。

具體 sql 腳本,看文章結(jié)尾,我附上。中間我自己寫(xiě)了造數(shù)據(jù)的腳本,也在結(jié)尾。

實(shí)驗(yàn)是為解決一個(gè)問(wèn)題的:查詢(xún)選修“tname553”老師所授課程的學(xué)生中,成績(jī)最高的學(xué)生姓名及其成績(jī) 。

查詢(xún) sql 是:

  1. select Student.Sname,course.cname,score 
  2.     from Student,SC,Course ,Teacher 
  3.     where Student.s_id=SC.s_id and SC.c_id=Course.c_id  and sc.t_id=teacher.t_id 
  4.     and Teacher.Tname='tname553' 
  5.     and SC.score=(select max(score)from SC where sc.t_id=teacher.t_Id); 

我來(lái)分析一下這個(gè)語(yǔ)句:4 張表等值 join,還有一個(gè)子查詢(xún)。算是比較簡(jiǎn)單的 sql 語(yǔ)句了(相比 ERP 動(dòng)就 10 張表的哦,已經(jīng)很簡(jiǎn)單了)。

我還會(huì)分解這個(gè)語(yǔ)句成 3 個(gè)簡(jiǎn)單的 sql:

  1. select max(score)  from SC ,Teacher where sc.t_id=teacher.t_Id and Teacher.Tname='tname553'
  2.   select sc.t_id,sc.s_id,score   from SC ,Teacher 
  3.   where sc.t_id=teacher.t_Id 
  4.   and score=590 
  5.   and Teacher.Tname='tname553'
  6.    select Student.Sname,course.cname,score 
  7.    from Student,SC ,course 
  8.    where Student.s_id=SC.s_id and  sc.s_id in (20769800,48525000,26280200) and course.c_id = sc.c_id; 

我來(lái)分析下:第一句,就是查詢(xún)最高分,得到最高分 590 分。第二句就是查詢(xún)出最高分的學(xué)生 id,得到:

  1. 20769800,48525000,26280200 

第三句就是查詢(xún)出學(xué)生名字和分?jǐn)?shù)。這樣這 3 個(gè)語(yǔ)句的就可以查詢(xún)出來(lái)成績(jī)最高的學(xué)生姓名及其成績(jī)。

接下來(lái)我會(huì)分別造數(shù)據(jù):1 千萬(wàn)選課記錄(一個(gè)學(xué)生選修 2 門(mén)課),造 500 萬(wàn)學(xué)生,100 萬(wàn)老師(一個(gè)老師帶 5 個(gè)學(xué)生,挺高端的吧),1000 門(mén)課。

用上面查詢(xún)語(yǔ)句查詢(xún)。其中 sc 表我測(cè)試了下有索引和沒(méi)有索引情況,具體見(jiàn)下表。

再接下來(lái),我會(huì)造 1 億選課記錄(一個(gè)學(xué)生選修 2 門(mén)課)5000 萬(wàn)學(xué)生,1000 萬(wàn)老師,1000 門(mén)課。然后分別執(zhí)行上述語(yǔ)句。最后我會(huì)在 oracle 數(shù)據(jù)庫(kù)上執(zhí)行上述語(yǔ)句。

下面兩張表是測(cè)試結(jié)果:

仔細(xì)看上表,可以發(fā)現(xiàn)?

①步驟 3.1 沒(méi)有在連接鍵上加索引,查詢(xún)很慢,說(shuō)明:“多表關(guān)聯(lián)查詢(xún)時(shí),保證被關(guān)聯(lián)的字段需要有索引”。

②步驟 6.1,6.2,6.3,換成簡(jiǎn)單 sql,在數(shù)據(jù)量 1 億以上, 查詢(xún)時(shí)間還能勉強(qiáng)接受。此時(shí)說(shuō)明 MySQL 查詢(xún)有些吃力了,但是仍然嫩查詢(xún)出來(lái)。

③步驟 5.1,MySQL 查詢(xún)不出來(lái),4 表連接,對(duì)我本機(jī) MySQL 來(lái)說(shuō),1.5 億數(shù)據(jù)超過(guò)極限了(我調(diào)優(yōu)過(guò)這個(gè) SQL,執(zhí)行計(jì)劃和索引都走了,沒(méi)有問(wèn)題,show profile 顯示在 sending data,這個(gè)問(wèn)題另外文章詳談)。

④對(duì)比 1.1 和 5.1 步驟 sql 查詢(xún),4 表連接,對(duì)我本機(jī) MySQL 來(lái)說(shuō) ,1.5 千萬(wàn)數(shù)據(jù)查詢(xún)很流利,是一個(gè) MySQL 數(shù)據(jù)量流利分水嶺。(這個(gè)只是現(xiàn)象,不太準(zhǔn)確,需要同時(shí)計(jì)算表的容量)。

⑤步驟 5.1 對(duì)比 6.1,6.2,6.3,多表 join 對(duì) MySQL 來(lái)說(shuō),處理有些吃力。

⑥超過(guò)三張表禁止 join,這個(gè)規(guī)則是針對(duì) MySQL 來(lái)說(shuō)的。后續(xù)會(huì)看到我用同樣機(jī)器,同樣數(shù)據(jù)量,同樣內(nèi)存,可以完美計(jì)算 1.5 億數(shù)據(jù)量 join。

針對(duì)這樣一個(gè)規(guī)則,對(duì)開(kāi)發(fā)來(lái)說(shuō) ,需要把一些邏輯放到應(yīng)用層去查詢(xún)。

總結(jié):這個(gè)規(guī)則,超過(guò)三張表禁止 join,由于數(shù)據(jù)量太大的時(shí)候,MySQL 根本查詢(xún)不出來(lái),導(dǎo)致阿里出了這樣一個(gè)規(guī)定。

其實(shí)如果表數(shù)據(jù)量少,10 張表也不成問(wèn)題,你自己可以試試。而我們公司支付系統(tǒng)朝著大規(guī)模高并發(fā)目標(biāo)設(shè)計(jì)的,所以,遵循這個(gè)規(guī)定。

在業(yè)務(wù)層面來(lái)講,寫(xiě)簡(jiǎn)單 sql,把更多邏輯放到應(yīng)用層,我的需求我會(huì)更了解,在應(yīng)用層實(shí)現(xiàn)特定的 join 也容易得多。

讓我們來(lái)看看 oracle 數(shù)據(jù)庫(kù)的優(yōu)秀表現(xiàn):

看步驟 7.1,就是沒(méi)有索引,join 表很多的情況下,oracle 仍然 26 秒查詢(xún)出結(jié)果來(lái)。所以我會(huì)說(shuō) MySQL 的 join 很弱。

那么問(wèn)題來(lái)了,為什么現(xiàn)在使用很多人使用 MySQL 呢?這是另外一個(gè)問(wèn)題,我會(huì)另外說(shuō)下我的思考。

看完本篇文章,另外我還附加贈(zèng)送,所謂摟草打兔子。就是快速造數(shù)據(jù)。你可以自己先寫(xiě)腳本造數(shù)據(jù),看看我是怎么造數(shù)據(jù)的,就知道我的技巧了。

附上部分截圖:

附上 sql 語(yǔ)句和造數(shù)據(jù)腳本:

  1. use stu; 
  2. drop table if exists student; 
  3. create table student 
  4.   (  s_id int(11) not null auto_increment , 
  5.      sno    int(11), 
  6.      sname varchar(50), 
  7.      sage  int(11), 
  8.      ssex  varchar(8) , 
  9.      father_id int(11), 
  10.       mather_id int(11), 
  11.       note varchar(500), 
  12.      primary key (s_id), 
  13.    unique key uk_sno (sno) 
  14.   ) engine=innodb default charset=utf8mb4; 
  15. truncate table student; 
  16.   delimiter $$ 
  17. drop function if exists   insert_student_data $$ 
  18. create function insert_student_data() 
  19.  returns  int deterministic 
  20.     begin 
  21.     declare  i int
  22.       set i=1; 
  23.       while  i<50000000 do 
  24.       insert into student  values(i ,i, concat('name',i),i,case when floor(rand()*10)%2=0 then 'f' else 'm' end,floor(rand()*100000),floor(rand()*1000000),concat('note',i) ); 
  25.       set i=i+1; 
  26.       end while; 
  27.       return 1; 
  28.     end$$ 
  29. delimiter ; 
  30. select  insert_student_data(); 
  31. select count(*) from student; 
  32. use stu; 
  33. create table course 
  34.   ( 
  35.      c_id int(11) not null auto_increment , 
  36.      cname varchar(50) 
  37.      note varchar(500), primary key (c_id) 
  38.   )  engine=innodb default charset=utf8mb4; 
  39. truncate table course; 
  40.   delimiter $$ 
  41. drop function if exists   insert_course_data $$ 
  42. create function insert_course_data() 
  43.  returns  int deterministic 
  44.     begin 
  45.     declare  i int
  46.       set i=1; 
  47.       while  i<=1000 do 
  48.       insert into course  values(i , concat('course',i),floor(rand()*1000),concat('note',i) ); 
  49.       set i=i+1; 
  50.       end while; 
  51.       return 1; 
  52.     end$$ 
  53. delimiter ; 
  54. select  insert_course_data(); 
  55. select count(*) from course; 
  56. use stu; 
  57. drop table if exists sc; 
  58. create table sc 
  59.   ( 
  60.      s_id    int(11), 
  61.      c_id    int(11), 
  62.      t_id    int(11), 
  63.      score int(11) 
  64.   )  engine=innodb default charset=utf8mb4; 
  65. truncate table sc; 
  66.   delimiter $$ 
  67. drop function if exists   insert_sc_data $$ 
  68. create function insert_sc_data() 
  69.  returns  int deterministic 
  70.     begin 
  71.     declare  i int
  72.       set i=1; 
  73.       while  i<=50000000 do 
  74.       insert into sc  values( i,floor(rand()*1000),floor(rand()*10000000),floor(rand()*750)) ; 
  75.       set i=i+1; 
  76.       end while; 
  77.       return 1; 
  78.     end$$ 
  79. delimiter ; 
  80. select  insert_sc_data(); 
  81. commit
  82. select  insert_sc_data(); 
  83. commit
  84. create index idx_s_id  on sc(s_id)   ; 
  85. create index idx_t_id  on sc(t_id)   ; 
  86. create index idx_c_id  on sc(c_id)   ; 
  87. select count(*) from sc; 
  88. use stu; 
  89. drop table if exists teacher; 
  90. create table teacher 
  91.   ( 
  92.     t_id  int(11) not null auto_increment , 
  93.      tname varchar(50) , 
  94.      note varchar(500),primary key (t_id) 
  95.   )  engine=innodb default charset=utf8mb4; 
  96.  
  97.   truncate table teacher; 
  98.   delimiter $$ 
  99. drop function if exists   insert_teacher_data $$ 
  100. create function insert_teacher_data() 
  101.  returns  int deterministic 
  102.     begin 
  103.     declare  i int
  104.       set i=1; 
  105.       while  i<=10000000 do 
  106.       insert into teacher  values(i , concat('tname',i),concat('note',i) ); 
  107.       set i=i+1; 
  108.       end while; 
  109.       return 1; 
  110.     end$$ 
  111. delimiter ; 
  112. select  insert_teacher_data(); 
  113. commit
  114. select count(*) from teacher; 

這個(gè)是 oracle 的測(cè)試和造數(shù)據(jù)腳本:

  1. create tablespace scott_data  datafile  '/home/oracle/oracle_space/sitpay1/scott_data.dbf'  size 1024m autoextend on
  2. create tablespace scott_index   datafile  '/home/oracle/oracle_space/sitpay1/scott_index.dbf'  size 64m  autoextend on
  3. create temporary tablespace scott_temp  tempfile  '/home/oracle/oracle_space/sitpay1/scott_temp.dbf'  size 64m autoextend on
  4. drop user  scott cascade
  5. create user  scott  identified by  tiger  default tablespace scott_data  temporary tablespace scott_temp  ; 
  6. grant resource,connect,dba to  scott; 
  7. drop table student; 
  8. create table student 
  9.   (  s_id number(11) , 
  10.      sno    number(11) , 
  11.      sname varchar2(50), 
  12.      sage  number(11), 
  13.      ssex  varchar2(8) , 
  14.      father_id number(11), 
  15.       mather_id number(11), 
  16.       note varchar2(500) 
  17.   ) nologging; 
  18. truncate table student; 
  19. create or replace procedure insert_student_data 
  20.  is 
  21.    q number(11); 
  22.     begin 
  23.      q:=0; 
  24.       for i in  1..50 loop 
  25.       insert /*+append*/ into student   select rownum+q as s_id,rownum+q  as sno, concat('sutdent',rownum+q ) as sname,floor(dbms_random.value(1,100)) as sage,'f' as ssex,rownum+q  as father_id,rownum+q  as mather_id,concat('note',rownum+q ) as note from dual connect by level<=1000000; 
  26.       q:=q+1000000; 
  27.       commit
  28.       end loop; 
  29. end insert_student_data; 
  30. call insert_student_data(); 
  31. alter table student  add constraint  pk_student primary key (s_id); 
  32. commit
  33. select count(*) from student; 
  34. create table course 
  35.   ( 
  36.      c_id number(11) primary key
  37.      cname varchar2(50), 
  38.      note varchar2(500) 
  39.   )  ; 
  40. truncate table course; 
  41.  create or replace procedure insert_course_data 
  42.  is 
  43.    q number(11); 
  44.     begin 
  45.  
  46.       for i in  1..1000 loop 
  47.       insert /*+append*/ into course  values(i , concat('name',i),concat('note',i) ); 
  48.       end loop; 
  49. end insert_course_data; 
  50. call insert_course_data(); 
  51. commit
  52. select count(*) from course; 
  53. create table sc 
  54.   ( 
  55.      s_id    number(11), 
  56.      c_id    number(11), 
  57.      t_id    number(11), 
  58.      score number(11) 
  59.   ) nologging; 
  60. truncate table sc; 
  61.  create or replace procedure insert_sc_data 
  62.  is 
  63.    q number(11); 
  64.     begin 
  65.      q:=0; 
  66.       for i in  1..50 loop 
  67.       insert /*+append*/ into sc   select rownum+q as s_id, floor(dbms_random.value(0,1000))  as c_id,floor(dbms_random.value(0,10000000)) t_id,floor(dbms_random.value(0,750)) as score from dual connect by level<=1000000; 
  68.       q:=q+1000000; 
  69.       commit
  70.       end loop; 
  71. end insert_sc_data; 
  72. call insert_sc_data(); 
  73. create index idx_s_id  on sc(s_id)   ; 
  74. create index idx_t_id  on sc(t_id)   ; 
  75. create index idx_c_id  on sc(c_id)   ; 
  76. select count(*) from sc; 
  77. create table teacher 
  78.   ( 
  79.     t_id  number(11) , 
  80.      tname varchar2(50) , 
  81.      note varchar2(500) 
  82.   )nologging ; 
  83.     truncate table teacher; 
  84. create or replace procedure insert_teacher_data 
  85.  is 
  86.    q number(11); 
  87.     begin 
  88.      q:=0; 
  89.       for i in  1..10 loop 
  90.       insert /*+append*/ into teacher   select rownum+q as t_id, concat('teacher',rownum+q ) as tname,concat('note',rownum+q ) as note from dual connect by level<=1000000; 
  91.       q:=q+1000000; 
  92.       commit
  93.       end loop; 
  94. end insert_teacher_data; 
  95. call insert_teacher_data(); 
  96. alter table teacher  add constraint  pk_teacher primary key (t_id); 
  97. select count(*) from teacher; 

作者:e71hao

編輯:陶家龍

出處:blog.itpub.net/30393770/viewspace-2650450/

 

責(zé)任編輯:武曉燕 來(lái)源: blog.itpub.net
相關(guān)推薦

2025-07-14 00:00:00

2020-11-12 07:49:18

MySQL

2022-09-05 10:06:21

MySQL外循環(huán)內(nèi)循環(huán)

2022-02-22 12:51:39

存儲(chǔ)過(guò)程JavaSQL

2021-06-17 06:19:20

存儲(chǔ)SQL數(shù)據(jù)庫(kù)

2023-11-16 12:34:00

MySQLjoin

2019-03-18 15:00:48

SQLJoin用法數(shù)據(jù)庫(kù)

2009-04-02 08:28:17

2021-06-26 07:18:15

JscodeshiftBabel節(jié)點(diǎn)

2018-09-19 21:34:12

阿里云芯片達(dá)摩院

2021-07-28 22:45:32

人臉識(shí)別生物識(shí)別信息安全

2010-05-04 14:10:53

Oracle表

2022-01-27 07:40:27

iOS微信朋友圈

2022-01-11 10:51:29

FlinkJoin數(shù)據(jù)

2024-09-27 09:41:31

2025-04-29 10:24:01

大數(shù)據(jù)StarRocksJOIN

2022-11-03 11:25:30

阿里云低代碼

2023-01-09 08:43:34

2022-07-13 12:53:59

數(shù)據(jù)存儲(chǔ)

2025-09-17 09:31:12

Controller商品 ID代碼
點(diǎn)贊
收藏

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

亚洲一区在线观看免费观看电影高清| 成人黄色av| 亚洲人吸女人奶水| 国产a一区二区| 国产污视频在线观看| 精品视频自拍| 色综合久久久久| 中文字幕日韩精品一区二区| 动漫av一区二区三区| 另类图片国产| 欧美成人黄色小视频| 亚洲天堂资源在线| 久久精品黄色| 香蕉加勒比综合久久| 色女人综合av| 黄频在线免费观看| 免费视频最近日韩| 欧美激情视频一区| 国产调教在线观看| 国产在线播放精品| 欧美精品少妇一区二区三区| 欧美啪啪免费视频| 黄色片免费在线观看| 欧美a级大片在线| 香港久久久电影| 亚洲成在线观看| 一区二区精品国产| 日韩欧美亚洲系列| 国产精品99久久久久久宅男| 日本成人精品在线| 久久午夜无码鲁丝片午夜精品| 欧美日韩一区二区综合| 亚洲第一区在线观看| 精品综合久久久久| 蜜桃成人精品| 欧美视频中文字幕在线| 成人av在线不卡| 麻豆最新免费在线视频| 国产亚洲va综合人人澡精品| 国产一区二区高清不卡| 国产精品欧美综合亚洲| 日韩电影一二三区| 欧美一级成年大片在线观看| 国产精品成人av久久| 欧美电影《睫毛膏》| 国产一区二区日韩精品欧美精品| 2一3sex性hd| 国产一区二区网| 色欲av永久无码精品无码蜜桃| 麻豆国产精品视频| 国产精品激情av在线播放| 中文字幕精品三级久久久| 黄色在线成人| 欧美日本亚洲视频| 精国产品一区二区三区a片| 999久久久91| 综合久久五月天| 九九九视频在线观看| 欧美精品乱码| 中文字幕亚洲一区| 国产免费嫩草影院| 久久综合成人| 久久九九国产精品怡红院| jizzjizzjizz国产| 91成人看片| 欧美www在线| 欧美三根一起进三p| 欧美激情综合色综合啪啪| 插插插亚洲综合网| 精品99久久久久成人网站免费| 欧美激情1区2区| 久久久久久国产精品美女| 日本熟女一区二区| 99久久综合| 欧美美最猛性xxxxxx| 麻豆成人在线视频| 国产综合色产| 欧洲成人免费视频| 91丨九色丨海角社区| 蜜桃久久av一区| 亚洲一区二区三区视频播放| 成人精品在线播放| 26uuu精品一区二区三区四区在线| 青娱乐一区二区| 欧洲不卡av| 亚洲国产一区二区在线播放| 国产精品免费观看久久| 先锋影音一区二区| 精品毛片乱码1区2区3区| 欧美亚洲第一区| 精品国产大片大片大片| 午夜精品免费| 欧美在线欧美在线| 欧美丰满老妇厨房牲生活| 三级黄色片免费看| 久久精品亚洲成在人线av网址| 亚洲免费一级电影| 2025国产精品自拍| 麻豆91精品| 糖心vlog在线免费观看| 91麻豆一二三四在线| 亚洲成人精品在线观看| 黄色片免费在线观看视频| 激情网站在线| 91成人看片片| 亚洲免费在线播放视频| 2021年精品国产福利在线| 精品亚洲国产视频| 人与动物性xxxx| 7777久久香蕉成人影院| 欧美一区视频在线| 亚洲中文字幕在线观看| 高清久久久久久| 久久99精品久久久久久久久久 | 欧美日韩水蜜桃| 中文字幕亚洲综合| 国产在线视频二区| 青青青伊人色综合久久| 成人自拍爱视频| 北岛玲一区二区三区| 亚洲一区二区三区四区中文字幕| 女人和拘做爰正片视频| 久久国产视频一区| 天堂a中文在线| 国产亚洲婷婷免费| 国产精品igao激情视频| 全亚洲第一av番号网站| 日韩美女视频在线| 日本美女bbw| 午夜性色一区二区三区免费视频| 日本免费一区二区三区视频观看| 国产麻豆91视频| xfplay精品久久| 一本色道久久88亚洲精品综合| 黑人巨大精品| 精品av久久707| 一级性生活免费视频| 首页综合国产亚洲丝袜| 国产精品久久久久久久久婷婷 | 九色porny自拍视频在线播放| 欧美一级爆毛片| 久久婷婷五月综合| 一本色道88久久加勒比精品| 91色精品视频在线| freemovies性欧美| 色综合一个色综合亚洲| 国产xxxxxxxxx| 欧美另类视频| 91香蕉亚洲精品| 91视频在线观看| 日本韩国欧美一区| 草草地址线路①屁屁影院成人| 欧美午夜精品| 91亚洲精品久久久久久久久久久久| 青青免费在线视频| 在线视频中文字幕一区二区| 国产亚洲色婷婷久久99精品91| 伊人久久久大香线蕉综合直播| 亚洲影院色在线观看免费| 麻豆av免费在线观看| 欧美日韩精品一区二区天天拍小说 | xxxxxx欧美| 精品视频在线播放| 狠狠狠狠狠狠狠| 亚洲一级免费视频| 成人小视频在线看| 成人av婷婷| 久久久久久久网站| 亚洲国产综合一区| 亚洲精品网站在线观看| 亚洲18在线看污www麻豆| 欧美国产美女| 91精品综合视频| 好了av在线| 日韩欧美你懂的| 日本少妇性生活| 91精选在线| 日韩中文字幕麻豆| 欧美成人蜜桃| 天然素人一区二区视频| 一区二区欧美在线| 曰批又黄又爽免费视频| 欧美高清在线一区| 亚洲一区二区福利视频| 综合日韩在线| 国产精品乱码一区二区三区| gogo久久| 亚洲奶大毛多的老太婆| 最新在线中文字幕| 一区二区三区欧美日韩| 白嫩情侣偷拍呻吟刺激| 国产精品五区| 亚洲精品国产精品久久| 老司机亚洲精品一区二区| 欧美夫妻性视频| 天堂视频中文在线| 67194成人在线观看| 毛片a片免费观看| 91在线免费播放| 中文久久久久久| 欧美日韩一区二区高清| 久久久久久久久四区三区| 国产精品毛片久久久久久久久久99999999| 久久亚洲成人精品| 香蕉视频黄色片| 欧美日免费三级在线| 欧美成人精品欧美一| 91免费看视频| 香蕉视频xxxx| 久久久蜜桃一区二区人| 国产精品视频二| 国产一区二区三区电影在线观看| 91九色综合久久| 超碰国产一区| 欧美日韩xxxxx| 成人一区二区不卡免费| 欧美日韩国产区一| 国产伦精品一区二区三区视频网站| 中文字幕免费一区| 五月天丁香社区| 蜜臀va亚洲va欧美va天堂| 成人免费观看在线| 成人在线电影在线观看视频| 精品福利影视| 国产精品一区二区三区www| 欧美在线性爱视频| 在线观看h网| 在线日韩欧美视频| 污视频软件在线观看| 欧美日本在线一区| 一级久久久久久| 偷拍一区二区三区四区| 国产老头老太做爰视频| 久久久久久久久久美女| 亚洲美女精品视频| 日本欧美一区二区| 国产裸体舞一区二区三区| 国产综合网站| 裸体大乳女做爰69| 超碰成人久久| 蜜桃av久久久亚洲精品| youjizz亚洲| 国产经品一区二区| 91丨精品丨国产| 国产精品视频xxxx| 春暖花开亚洲一区二区三区| 91精品国产沙发| gogo高清午夜人体在线| 97精品免费视频| 波多野结衣中文字幕久久| 久久精品电影一区二区| 日本不卡三区| 日韩在线观看网站| 337p日本欧洲亚洲大胆鲁鲁| 中文字幕欧美日韩精品| 国产午夜精品一区理论片| 日韩国产高清污视频在线观看| 亚洲av无码乱码国产麻豆| 91精品国产综合久久精品麻豆| 亚洲天堂手机版| 欧美日韩一区二区欧美激情| www.av88| 欧美猛男超大videosgay| 在线免费观看中文字幕| 欧美日韩亚洲另类| 天天干天天干天天干天天| 狠狠爱在线视频一区| 久久久久久久久久免费视频 | 99国产精品| 日韩中文字幕在线免费| 亚洲国产高清一区| 日韩美女爱爱视频| 亚洲免费高清| 午夜视频在线瓜伦| 日韩福利电影在线观看| 亚洲精品久久久中文字幕| 另类欧美日韩国产在线| 亚洲精品永久视频| 久久国产综合精品| 性感美女一区二区三区| 91视频免费播放| 欧美特黄一区二区三区| 中文幕一区二区三区久久蜜桃| 国产精品麻豆免费版现看视频| 亚洲精品国产a久久久久久| 久久久久久国产精品视频| 亚州成人在线电影| 亚洲欧美一二三区| 欧美午夜免费电影| 中文字幕人妻一区二区三区视频| 日韩一级黄色大片| 日韩中文字幕观看| 亚洲免费小视频| 国产精品刘玥久久一区| 欧美精品videofree1080p| 欧美电影免费观看网站| 国产一区二区香蕉| 99精品国产高清一区二区麻豆| 久久影院理伦片| 日韩综合网站| 欧美日韩dvd| 日韩午夜电影| 在线观看国产中文字幕| 国产69精品久久久久毛片 | 中文字幕永久在线观看| 欧美一区二区播放| 欧美zozo| 欧美日韩成人免费| 朝桐光一区二区| 国产乱码精品一区二区三区中文| 国产一区二区欧美| 国产91视频一区| 日韩主播视频在线| 久久久久亚洲av无码麻豆| 国产毛片精品视频| 精品人妻中文无码av在线| 亚洲激情综合网| 狠狠狠狠狠狠狠| 亚洲国产欧美一区二区三区久久| av黄色在线观看| 国产综合在线看| 四虎永久精品在线| 精品一区久久| 欧美精品二区| 色婷婷.com| 欧美国产乱子伦| 香蕉视频一区二区| 欧美精品一二三四| 九色在线免费| 高清一区二区三区日本久| 国产午夜久久av| 亚洲国产激情一区二区三区| 日韩亚洲在线| wwwxxxx在线观看| 日本一区二区三区久久久久久久久不| 亚欧视频在线观看| 日韩欧美一区电影| 免费a级毛片在线播放| 国产精品96久久久久久| 亚洲视频一起| 亚洲色婷婷久久精品av蜜桃| 麻豆精品久久精品色综合| 一区二区三区免费在线观看视频 | 国产农村妇女毛片精品| 菠萝蜜视频国产在线播放| 久久久久久国产精品久久| 青草综合视频| 免费国产一区二区| 极品尤物久久久av免费看| 中文字幕第一页在线视频| 久久久精品2019中文字幕之3| 女人十八岁毛片| 91精品国产欧美一区二区成人| 999在线视频| 国产精品久久久久久久久久久不卡 | 国产精品久久久久久久成人午夜| 亚洲视频777| 永久免费毛片在线播放| 久久久久久久久四区三区| 国产农村妇女精品一区二区| 一级特级黄色片| 午夜精品福利一区二区蜜股av| www.超碰在线.com| 隔壁老王国产在线精品| 欧美变态网站| 丰满爆乳一区二区三区| 97精品超碰一区二区三区| 日韩欧美国产亚洲| 亚洲乱码一区av黑人高潮| 自拍网站在线观看| 欧美日韩一区二区视频在线观看| 悠悠资源网亚洲青| 欧美日韩国产一中文字不卡 | 欧美一级免费大片| 欧美极品另类| 92国产精品视频| 久久高清免费| 国产精品91av| 午夜精品在线看| 蜜桃视频在线观看网站| 国产精品视频自拍| 亚洲综合婷婷| 污片免费在线观看| 91福利国产成人精品照片| 一区二区高清不卡| 国产精品99导航| 欧美国内亚洲| 亚洲天堂资源在线| 欧美系列亚洲系列| 直接在线观看的三级网址| 久久精品一区二区三区不卡免费视频| 久久久久久9| 日韩欧美一区二区久久婷婷| 无码人妻一区二区三区免费 | 亚洲第一精品网站| 97国产精品人人爽人人做| 精品国产三级a在线观看| 色网站免费观看| 日本国产一区二区三区| 日韩激情一区|