码迷,mamicode.com
首页 > 数据库 > 详细

mysql高效获取两张表共同字段的交集数据

时间:2014-07-28 23:47:14      阅读:363      评论:0      收藏:0      [点我收藏+]

标签:strong   数据   问题   div   line   sql   mysql   rom   

问题:

例如下面两站表A,B.A表和B表分别有5-10w数据。
A表结构如下:
id bid name title publisher extra
B表结构如下
id bid name title publisher
A出版社也为很多人出版了书籍,B出版社也为很多人出版了书籍,有sql语句找出这两个出版社为那些人 共同出版书籍,用innerjoin太慢,有没有什么更好的办法?

 

解答一:

由于不知道你表的索引情况,至于用join还是in和exists不太好说,理论上讲,exists最快、in次之、join最慢,但是这个不是绝对的,还需要看你的索引建立。建议你把表索引贴出来,或者分别用explain看看这三种方式MySQL的执行计划。然后再做相应的调优

 

解答二:

  1. SELECT id, bid, name, title, publisher FROM A where publisher in (select publisher from B group by B.publisher)

或者

  1. SELECT id, bid, name, title, publisher FROM A where exists (select publisher from B where B.publisher = A.publisher group by B.publisher)

用EXISTS应该效率更高,另外对查询条件字段publisher建立索引。

mysql高效获取两张表共同字段的交集数据,布布扣,bubuko.com

mysql高效获取两张表共同字段的交集数据

标签:strong   数据   问题   div   line   sql   mysql   rom   

原文地址:http://www.cnblogs.com/Alight/p/3873437.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!