有效地连接两个表

时间:2014-05-02 05:01:01

标签: mysql sql database

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

select * from cust where cust.attr in(select distinct attr from table sales)

然而,事实证明这是非常慢的..有一些有效的方法来执行连接

2 个答案:

答案 0 :(得分:1)

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

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

ALTER TABLE cust ADD INDEX (attr);
ALTER TABLE sales ADD INDEX (attr);

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

select * from cust c
inner join sales s
on c.attr=s.attr

答案 1 :(得分:0)

SELECT cust.* 
FROM cust 
INNER JOIN sales attr
ON sales.attr = cust.attr
WHERE [query conditions here]

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

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