【发布时间】:2009-12-08 02:31:33
【问题描述】:
我有一个场景,我必须对某些文本(主要是 64k 文本类型字段,但可能还有一些中等文本字段,我认为可以包含 4MB?)字段(基本上,对这些字段进行搜索和替换)。
这是我知道的方法,但不确定这是否是最好的方法。
使用 PHP 和 MySql,一般来说,我会做这样的事情(SQL 代码没有包装到 PHP 代码中,但你明白了):
SELECT id, some_text_row FROM table WHERE some_text_row LIKE '%some phrase%'
这可能会返回数万行。
接下来,我会这样做:
$row['some_text_row'] = str_replace( 'some phrase',
'some other phrase',
$row['some_text_row'] );
UPDATE table
SET some_text_row = "{$row['some_text_row']}"
WHERE id="{$row['id']'}"
LIMIT 1;
正如我所说,这可能是数以万计的更新。
没有这么大的更新经验,我想知道是否有更好的方法来解决这个问题,或者,如果数万行不是真正的问题(在在这种情况下,问题是,有多少行会成为问题)。
谢谢。
【问题讨论】:
-
为什么在 UPDATE 语句中有
LIMIT 1? -
真的习惯了——为了安全起见,我通常在我的 DELETE 查询中这样做。我想这不是真的必要。