首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高效地连接两个表

高效地连接两个表
EN

Stack Overflow用户
提问于 2014-05-02 13:01:01
回答 2查看 45关注 0票数 0

我有两个表共享相同的属性'attr‘。表cust中属性'attr‘中的值域是表sales中属性'attr’中值的域的子集。例如,表cust包含940、8575、454、86869、856869、9686作为属性'attr‘中的值,而表sales包含454、86869、856869、8756、5324、946707、9779。此外,表cust包含10亿行,而表sale包含1万亿行。为了执行连接,我尝试了以下命令:

代码语言:javascript
复制
select * from cust where cust.attr in(select distinct attr from table sales)

然而,这被证明是非常slow..is的,有一些有效的方法来执行连接

EN

回答 2

Stack Overflow用户

发布于 2014-05-02 13:06:42

10亿行!!... 1万亿行!!

在两个表中的attr列上创建索引

代码语言:javascript
复制
ALTER TABLE cust ADD INDEX (attr);
ALTER TABLE sales ADD INDEX (attr);

然后使用下面的语法进行连接。

代码语言:javascript
复制
select * from cust c
inner join sales s
on c.attr=s.attr
票数 1
EN

Stack Overflow用户

发布于 2014-05-02 13:07:20

代码语言:javascript
复制
SELECT cust.* 
FROM cust 
INNER JOIN sales attr
ON sales.attr = cust.attr
WHERE [query conditions here]

确保cust.attr和sales.attr也已编入索引

这篇关于JOINs的文章将会很有帮助:http://webduos.com/mysql-join-syntax/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23421058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档