1

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

我问是因为我不确定就我应该进行的查询数量而言,什么是一个好的阈值。我的搜索查询中应该包含多少个键?

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

谢谢!

4

1 回答 1

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表进行搜索,这应该不会太糟糕。

于 2012-08-07T21:56:48.207 回答