sql - 如何扩展sqlite3支持的最大SQL变量数?

标签 sql sqlite laravel-5.4

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

我有一些表,包括一个“约会”表,该表具有约2000多个行。

每当我尝试加载该表时,都会出现一个Query Exception

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


如何克服this scenario



同一数据库内的其他表似乎没有问题。我用谷歌搜索发现(也许)与sqlite3支持的SQL变量的限制有关。任何想法?

更新:我已经删除了表内的整个记录​​,现在可以了!

最佳答案

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

select customers.* from customers inner join my_table on customers.id = my_table.list_element_id


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

关于sql - 如何扩展sqlite3支持的最大SQL变量数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47847984/

相关文章:

MySQL如何从笛卡尔积中选择多个属性?

mysql - 我的 SQL 计数查询出了什么问题?

mysql - 如何在MySql中返回具有相同列值的行

输入ls后sqlite无法退出

laravel-5 - 如何使用 Laravel 5.4 在 VueJS 中存储数据

mysql - 如何在laravel中计算百分比

sql - 如何将 Teradata 中的列值转换为列名?

sqlite - 何时关闭 SQLite 数据库(使用 FMDB)

sqlite - 在 SQLite 中合并两个表时出现不需要的重复表结果

javascript - 在通过电子邮件发送 Blade 模板之前包含/执行 JS