提高sqlite中自联接的性能

时间:2010-07-21 05:25:05

标签: python sqlite

我有一个包含21列(所有整数)id,c1,c2 ... c20的表,以及为列中具有相同值的行获取id的内容...

因此,如果第1行c1 =第10行c1行,第1行将匹配第10行,第1行c2 =第10行第2行,依此类推。

这是查询的样子:

 select r1.id, r2.id 
 from tbl r1, tbl r2  
 where 1=1 and r1.c1=r2.c1 and r1.c2=r2.c2 and 
         ..... r1.c20=r2.c20 and not r1.id=r2.id 

我目前正在使用自联接,但这太慢了(10000行为20秒)。 我在列上设置了索引(?) 我有大约100万行 感谢

2 个答案:

答案 0 :(得分:1)

您是否在所有20列上尝试过单个索引?

答案 1 :(得分:1)

您可能想要创建一个额外的列,您可以在其中存储行中所有值的哈希值。然后只需索引该列并过滤与您要搜索的20个值的哈希值匹配的行。