我有一个大型sqlite表,不应该同时在内存中加载列['a','b','c',...]。它有一个针对a和b列的复合索引。
a b c ....
1 34 45656 .....
54 175 34323 ....
102 12121 3029 ....现在,我希望提取具有a和b的特定值的行,因此我正在考虑进行如下查询
SELECT * FROM table WHERE a IN <insert tuple of a vals> AND b IN <insert tuple of b vals>
然而,有成千上万这样的组合a和b,我想检查。我可以创建一个包含以下组合的熊猫数据库:
>>> df
a b
102 12121
234 879789
... ...简单地加入或合并这两个表可能更简单。
但是,我不想将另一个表添加到sqlite.db文件中,因为我可以创建不同的df,而且我也不想继续膨胀我的sqlite数据库文件大小。是否有方法在sqlite中创建临时表以进行合并?或者有办法通过熊猫做到这一点?
发布于 2020-03-14 14:49:00
因为您在a和b上有索引,所以查询a和b的每一个组合都比在Pandas或SQLite中创建新的数据结构和执行连接更有效。
您可以遍历a和b的每一个组合和查询,也可以在一个查询中执行,但是您受到SQLITE_MAX_SQL_LENGTH的限制
SELECT * FROM table WHERE (a = <a1> AND b = <b1>) OR (a = "a2" AND b = <b2>) ...
https://stackoverflow.com/questions/60674462
复制相似问题