1

首先,如果这已经在之前的帖子中介绍过,我很抱歉,我错过了。我已经做了很多搜索,到目前为止还没有遇到任何有效的方法。

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

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

问题是我有超过 100,000 行,每行都有不同的文本,要更新甚至一次执行 15,000 行需要 45 分钟。我是 SQL 新手,但我相当肯定这不是更新我需要更新的行的最有效方法。

我一直在尝试使用我在这里遇到的其他建议,但到目前为止都没有奏效。

4

1 回答 1

1

为了能够快速查找记录,您需要相关列的索引。(有关详细信息,请参阅查询计划。)

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

CREATE INDEX MyTable_Column2 ON MyTable(Column2 COLLATE NOCASE);

此外,Column2必须已声明为TEXT affinity


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


您可以随时使用EXPLAIN QUERY PLAN检查您的查询是否能够使用索引。

于 2013-05-29T17:18:18.640 回答