我有一个带有大约400个键值对的sqlite3数据库。我想知道什么是查询这个数据库的首选方法,因为我有2-3百万个密钥,我想找出这些值。
我问,因为我不确定在我应该提出的查询数量方面什么是好的门槛。我应该在搜索查询中包含多少个键?
select * from db_name where col_name in ( <optimum number of keys that I should search>)
谢谢!
答案 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
表进行聚集索引查找,这不应该太糟糕。