【发布时间】:2014-05-02 13:07:19
【问题描述】:
我有两个表共享相同的属性“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 万亿行。为了执行连接,我尝试了以下命令:
select * from cust where cust.attr in(select distinct attr from table sales)
但是,这会很慢。有没有一些有效的方法来执行连接
【问题讨论】:
-
attr 是否在两个表上都有索引?
-
no attr 不是索引。我认为一个好方法是索引它:)
-
是的,一旦你做索引更好地选择块中的数据,限制使用连接,这也将提高性能。
-
还要确保 attr col 在两个表中具有相同的大小和数据类型,以便在加入时索引正常工作。