Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在rowid上更新是更新大型sqlite数据库的最快方法吗?_C#_Sqlite - Fatal编程技术网

C# 在rowid上更新是更新大型sqlite数据库的最快方法吗?

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并删除

我在C中使用Sqlite,有一个非常大的数据库,大约有600万条记录——我使用debug_all_表中的select rowid,其中rule=X检索了大约10000行的列表,我需要使用ignore列进行更新——update to ignore=1或以最快的方式删除

起初我尝试删除行,但发现速度非常慢,有人说删除是一个缓慢的过程。我改为尝试将忽略列从0更新为1-最初搜索行中的另一个值-但是,这需要几个小时。 我认为在这种情况下,切换到使用索引rowid会加快过程,因为它只需查找该rowid并删除该行,而不必检查数据库中的每一行,以查看特定列的值是否与我要求删除的10000行中的每一行的值相匹配——这似乎仍需要数小时

我是否认为以下是更新rowid的最佳方式:

还是每次仍在搜索每一行并检查rowid?有没有更有效的方法


我最后的想法是,我可以将不想忽略的内容插入到临时表中,删除原始表,然后重新插入到需要对循环执行类似更新的表中。插入最初的600万条记录只需几分钟,所以这似乎可以解决我的问题,因为更新/删除只需要花费很长时间,但我觉得我必须错过一些东西,这才是实现我想要的最快的方法?

最好的方法是尝试一下,看看它是否快的最好方法是尝试一下,以及基准测试和替代测试。
update debug_all_table set ignore=1 where rowid=@rowid