SQLite使用基于变量文本的单个值更新多行

时间:2013-05-29 15:02:37

标签: sql sqlite where

首先,如果在之前的帖子中已经涵盖了这个并且我错过了,那么道歉。我做了很多搜索,并没有遇到任何迄今为止有用的东西。

我目前正在使用以下查询来更新表格中的记录。

UPDATE table SET Column1="1" WHERE Column2 LIKE "Text";

问题是我有超过100,000行,每行有不同的文字,要更新,甚至每次做15,000行需要45分钟。我是SQL的新手,但我很确定这不是更新我需要更新的行的最有效方法。

我一直在尝试使用我在这里遇到过的其他建议,但到目前为止还没有任何建议。

1 个答案:

答案 0 :(得分:0)

为了能够快速查找记录,您需要在相关列上建立索引。 (有关详细信息,请参阅Query Planning。)

在这种特殊情况下,您需要Column2上的索引。 LIKE不区分大小写,因此您必须创建不区分大小写的索引,如下所示:

CREATE INDEX MyTable_Column2 ON MyTable(Column2 COLLATE NOCASE);

此外,Column2必须已使用TEXT affinity声明。


将多个更新包装到一个事务中,否则事务开销将远远大于实际更新所需的时间。


您始终可以使用EXPLAIN QUERY PLAN查看您的查询是否能够使用索引。