我有一个sqlite数据库,在这里执行如下查询
Select * from table where col_name NOT IN ('val1','val2')
基本上,我从服务器上得到一个巨大的值列表,我需要选择给定列表中不存在的值。
目前其工作正常,无问题。但是,随着服务器数据库的频繁更新,来自服务器的值的数量变得非常庞大。
所以,我可能会得到成千上万的字符串值,我需要传递给 NOT IN
我的问题是,它会不会导致任何性能问题在未来?是吗 NOT IN
参数有大小限制吗(比如你能查到的最大10000个值)?
它会不会在某个时候引起车祸?
2条答案
按热度按时间wmomyfyw1#
这是关于sqlite中各种限制的官方参考。我认为sql语句的最大长度可能与您的情况有关。默认值为1000000,可调。
除此之外,我不认为参数的数目有任何限制
NOT IN
条款。sr4lhrrt2#
如果要测试的值不止几个,那么最好将它们放在一个表中,该表在包含它们的列上有一个索引。然后像
或
无论有多少条记录
value_table
因为该索引将用于查找条目。另外,当然,它使重用准备好的语句变得更加容易,因为每次向需要检查的语句添加值时,您不必创建新语句并重新绑定每个值(您使用的是带有占位符的准备好的语句,对吧,而不是试图将其内容内联到字符串中?)。你只要把它插入
value_table
相反。