如何扩展sqllite3支持的最大SQL变量数?

时间:2017-12-16 16:56:44

标签: sql sqlite laravel-5.4

我使用配置了 sqlite 数据库的Laravel 5.4。

我有一些表格,包括约会' 2000 +

的表格

每当我尝试加载此表时,都会出现Query Exception,其中包含:

SQLSTATE[HY000]: General error: 1 too many SQL variables

如何克服this scenario

同一个数据库中的其他表似乎没有问题。我用Google搜索并发现(也许)它与sqlite3支持的SQL变量限制有关。有什么想法吗?

更新:我删除了表格中的所有记录,现在没事了!

1 个答案:

答案 0 :(得分:1)

在您的情况下,您可以通过将2000多个值的列表插入表(临时表或永久表)中,然后通过{{1在sql中引用}}或使用where id in (select id from my_table)inner join。使用内部联接和永久表,您可以设置显式索引,这可能比依赖查询优化器来优化exists()in()更为有用:

exists()

如果2000多个变量的列表每次都会更改,则可以在事务期间插入它们,然后再删除它们。您只需要确保将表值隔离到其他并发进程中即可(例如,表中有另一个键,用于thread_id或调用事务唯一的类似标识符)。