使用数百万个查询查询sqlite db的灵活方法
我有一个SQLite3DB,大约有400个键值对。我想知道,如果我有200-300万个键,我想找出它们的值,那么查询这个数据库的首选方法是什么 我之所以这样问,是因为我不确定就我应该提出的查询数量而言,什么是一个好的阈值。我应该在搜索查询中包含多少键使用数百万个查询查询sqlite db的灵活方法,sql,sqlite,Sql,Sqlite,我有一个SQLite3DB,大约有400个键值对。我想知道,如果我有200-300万个键,我想找出它们的值,那么查询这个数据库的首选方法是什么 我之所以这样问,是因为我不确定就我应该提出的查询数量而言,什么是一个好的阈值。我应该在搜索查询中包含多少键 select * from db_name where col_name in ( <optimum number of keys that I should search>) 从数据库名称中选择*,其中列名称位于() 谢谢 JNK
select * from db_name where col_name in ( <optimum number of keys that I should search>)
从数据库名称中选择*,其中列名称位于()
谢谢 JNK注意到了什么
select
查询在in
子句中包含400个字符串文字可能会运行得很差
创建一个表,类似于:
create table key_lookup
(
name varchar(32) not null primary key clustered ,
)
确保它在查找值上是聚集的(并且是唯一的)。然后对该表运行select:
select t.*
from some_table t
join key_lookup k on k.name = t.some_column
我不知道sqlite3,但是如果某个表
的键列上有一个可用的索引,那么您应该会获得相当好的性能。最糟糕的情况是,你应该在some\u表上进行一次表扫描,然后聚集索引针对key\u lookup
表进行搜索,这应该不会太糟糕。
select
查询在in
子句中包含400个字符串文字可能会运行得很差
创建一个表,类似于:
create table key_lookup
(
name varchar(32) not null primary key clustered ,
)
确保它在查找值上是聚集的(并且是唯一的)。然后对该表运行select:
select t.*
from some_table t
join key_lookup k on k.name = t.some_column
我不知道sqlite3,但是如果某个表
的键列上有一个可用的索引,那么您应该会获得相当好的性能。最糟糕的情况是,你应该在some\u表上进行一次表扫描,然后聚集索引针对key\u lookup
表进行搜索,这应该不会太糟糕。你能不能不把键放入一个表中,然后只JOIN
它,因为,你知道,这是SQL?你的数据库中有400个键值对,但你想选择200-300万个?现在还不太清楚您想要实现什么。我存储了4亿个键/值,以备将来查找。因此,当我获得一组新的已知键(每次为200-300万个)时,我需要找到它们的值,如果它们存在于数据库中?我希望现在很清楚,这听起来像是你应该尝试的事情。你不能把键放到一个表中,然后加入它,因为,你知道,它是SQL?你的数据库中有400个键值对,但你想选择其中的200-300万对吗?现在还不太清楚您想要实现什么。我存储了4亿个键/值,以备将来查找。因此,当我获得一组新的已知键(每次为200-300万个)时,我需要找到它们的值,如果它们存在于数据库中?我希望现在很清楚,听起来你应该试试。