搜索多列的最佳方式

时间:2013-06-17 08:12:10

标签: mysql hash bigdata data-warehouse

我想知道在同一时间搜索多个列的最佳方法是什么,这是在大型数据库上。

例如,我有一个包含400k记录的表,我想与另一个具有1000k记录的表执行交集。

目前我正在做这样的事情:

alter table t1 add column (hash varbinary(32));
update t1 set hash = md5(concat(col1, col2, col3));
alter table t1 add index (hash);

然后我执行查询,加入,使用散列列...

select * from t1 where t1.hash not in (select t2.hash from t2); 

有没有人有类似的经历,或使用其他技巧或其他可能有趣的分享?

2 个答案:

答案 0 :(得分:0)

你看过Apache Solr项目了吗?我没有在MySQL上使用它,但过去曾在一个与Microsoft SQL Server一起使用它的项目上工作过。它对于复杂查询非常有用。

答案 1 :(得分:0)

如果col1, col2, col3在两个表中具有相同的数据类型且存在索引(更好的群集),则此解决方案不会带来太多性能提升。 存储int列会更便宜,列的所有组合都会编号。

我认为您的表结构和查询有更多的空间需要改进以获得“交集”。