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