1

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

例如,我有一个包含 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); 

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

4

2 回答 2

0

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

于 2013-06-17T08:23:24.787 回答
0

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

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

于 2013-06-25T08:21:56.427 回答