c# - 慢更新查询 SQLite
问题描述
使用选择查询从另一个表的数据获取更新参数时,SQLite 更新如此缓慢是否有特殊原因?
例如,如果我这样做:
UPDATE cits SET cit_edu_lvl = cit_edu_lvl + 1, cit_edu_status = 0, cit_age = 18
它在 < 1 秒内运行
但如果我这样做
UPDATE cits SET cit_edu_lvl = cit_edu_lvl + (
SELECT cit_edu_update_amt FROM education_enrollment ee WHERE ee.cit_ck =
cits.cit_ck)
WHERE cit_ck in (select cit_ck FROM education_enrollment)
要从其他表中获取相同的数据并使用它进行更新,需要 12 秒。
我错过了什么?我在 SQLiteStudio 中直接运行,所以批处理不是问题。如果我要在我的 c# 应用程序中运行它,我会相应地使用批处理。
谢谢
解决方案
SQLite 不支持正式的更新连接语法,这可能是您在这里尝试做的第一件事。但是,我们可以尝试向education_enrollment
表中添加索引来加速相关子查询:
CREATE INDEX idx ON education_enrollment(cit_ck, cit_edu_update_amt);
请注意,如果 SQLite 不允许您向education_enrollment
已存在的表添加索引,则可能必须使用此索引重新创建表。
推荐阅读
- javascript - 使用 php 或 javascript 以编程方式在开发人员工具中获取 newtork 选项卡
- css - 我在堆叠 div 然后翻译它们时遇到问题
- java - 处理程序调度失败;嵌套异常是 java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient
- php - PHP中的嵌套接口
- azure-virtual-machine - Azure VM 规模集:是否可以在不从 URL 下载的情况下传递引导脚本/设置?
- javascript - 如何专门从 jquery 中的 select 标记更改 innerHTML 值?
- r - 在本地服务器上的应用程序中保存和加载工作区
- html - 错误 - 解析错误:未终止的 JSX 内容
- ios - 需要帮助以在我的 DATA-STRUCTURE 应用程序代码中找到逻辑错误
- c# - c#中的随机文本屏蔽