我想知道是否有人可以指出如何实现这一点。
我有一个非常沉重的查询(主要是因为10年的历史记录涉及购买的记录数量,每天数千个)。
无论如何简化它会是这样的(更多的连接参与)
SELECT customerNumber from purchaseOrder where somestatus = someStatus;
在这种情况下,有多个联接,但我想知道的是客户编号,他们没有通过关系连接,因为订单也可以由非注册人员购买作为一次性的东西。
现在这个查询现在会产生大约950条记录。加载最多需要30秒(这很好)。
然而现在我想在不同的查询中重复使用结果,例如:
SELECT * from registeredUsers wherestatus
IN(Some values which mean the account is not active)
and customerNumber in (results from query 1).
因此,当我将数字粘贴到IN部分时,第二个查询非常快。但是我想让它动态地工作,因为我需要为不同的情况创建一些查询2的变体。
这是一个选择吗?
我尝试将结果放在变量中,但后来我得到“Subquery返回多行”错误,这是有道理的。
那么还有其他方法吗?我在考虑创建一个可能有效的临时表吗?
答案 0 :(得分:1)
是的临时表是去的地方。将registeredUsers
的结果存储在临时表中,并将customerNumber
使用sqlite3_open
存储在子查询中的临时表中。
sqlite3* db = nullptr;
sqlite3_open(..., &db);
m_db.reset(db);
如果您的unique_ptr
表没有sqlite3_close
上的索引