用数百万个查询查询sqlite db的方式

时间:2012-08-07 20:43:15

标签: sql sqlite

我有一个带有大约400个键值对的sqlite3数据库。我想知道什么是查询这个数据库的首选方法,因为我有2-3百万个密钥,我想找出这些值。

我问,因为我不确定在我应该提出的查询数量方面什么是好的门槛。我应该在搜索查询中包含多少个键?

select * from db_name where col_name in ( <optimum number of keys that I should search>)

谢谢!

1 个答案:

答案 0 :(得分:1)

@JNK注意到了什么。

select子句中包含400个字符串文字的in查询可能会运行得很糟糕。

创建一个表格,如:

create table key_lookup
(
  name varchar(32) not null primary key clustered ,
)

确保它在查找值上是群集的(并且是唯一的)。然后针对该表运行您的选择:

select t.*
from some_table t
join key_lookup k on k.name = t.some_column

我不知道sqlite3,但如果some_table在键列上有可用的索引,那么你应该会获得相当不错的性能。最糟糕的情况是,您应该在some_table上进行表扫描,并对key_lookup表进行聚集索引查找,这不应该太糟糕。