Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用数百万个查询查询sqlite db的灵活方法_Sql_Sqlite - Fatal编程技术网

使用数百万个查询查询sqlite db的灵活方法

使用数百万个查询查询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

我有一个SQLite3DB,大约有400个键值对。我想知道,如果我有200-300万个键,我想找出它们的值,那么查询这个数据库的首选方法是什么

我之所以这样问,是因为我不确定就我应该提出的查询数量而言,什么是一个好的阈值。我应该在搜索查询中包含多少键

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万个)时,我需要找到它们的值,如果它们存在于数据库中?我希望现在很清楚,听起来你应该试试。