首先,如果在之前的帖子中已经涵盖了这个并且我错过了,那么道歉。我做了很多搜索,并没有遇到任何迄今为止有用的东西。
我目前正在使用以下查询来更新表格中的记录。
UPDATE table SET Column1="1" WHERE Column2 LIKE "Text";
问题是我有超过100,000行,每行有不同的文字,要更新,甚至每次做15,000行需要45分钟。我是SQL的新手,但我很确定这不是更新我需要更新的行的最有效方法。
我一直在尝试使用我在这里遇到过的其他建议,但到目前为止还没有任何建议。
答案 0 :(得分:0)
为了能够快速查找记录,您需要在相关列上建立索引。 (有关详细信息,请参阅Query Planning。)
在这种特殊情况下,您需要Column2
上的索引。
LIKE
不区分大小写,因此您必须创建不区分大小写的索引,如下所示:
CREATE INDEX MyTable_Column2 ON MyTable(Column2 COLLATE NOCASE);
此外,Column2
必须已使用TEXT
affinity声明。
将多个更新包装到一个事务中,否则事务开销将远远大于实际更新所需的时间。
您始终可以使用EXPLAIN QUERY PLAN查看您的查询是否能够使用索引。