C# 在rowid上更新是更新大型sqlite数据库的最快方法吗?
我在C中使用Sqlite,有一个非常大的数据库,大约有600万条记录——我使用debug_all_表中的select rowid,其中rule=X检索了大约10000行的列表,我需要使用ignore列进行更新——update to ignore=1或以最快的方式删除 起初我尝试删除行,但发现速度非常慢,有人说删除是一个缓慢的过程。我改为尝试将忽略列从0更新为1-最初搜索行中的另一个值-但是,这需要几个小时。 我认为在这种情况下,切换到使用索引rowid会加快过程,因为它只需查找该rowid并删除该行,而不必检查数据库中的每一行,以查看特定列的值是否与我要求删除的10000行中的每一行的值相匹配——这似乎仍需要数小时 我是否认为以下是更新rowid的最佳方式: 还是每次仍在搜索每一行并检查rowid?有没有更有效的方法C# 在rowid上更新是更新大型sqlite数据库的最快方法吗?,c#,sqlite,C#,Sqlite,我在C中使用Sqlite,有一个非常大的数据库,大约有600万条记录——我使用debug_all_表中的select rowid,其中rule=X检索了大约10000行的列表,我需要使用ignore列进行更新——update to ignore=1或以最快的方式删除 起初我尝试删除行,但发现速度非常慢,有人说删除是一个缓慢的过程。我改为尝试将忽略列从0更新为1-最初搜索行中的另一个值-但是,这需要几个小时。 我认为在这种情况下,切换到使用索引rowid会加快过程,因为它只需查找该rowid并删除
我最后的想法是,我可以将不想忽略的内容插入到临时表中,删除原始表,然后重新插入到需要对循环执行类似更新的表中。插入最初的600万条记录只需几分钟,所以这似乎可以解决我的问题,因为更新/删除只需要花费很长时间,但我觉得我必须错过一些东西,这才是实现我想要的最快的方法?最好的方法是尝试一下,看看它是否快的最好方法是尝试一下,以及基准测试和替代测试。
update debug_all_table set ignore=1 where rowid=@rowid