1

我有一个大型 MySQL 照片表,即使有全文索引、普通索引和其他性能技巧,我发现我的查询变得有点慢(糟糕的 MySQL 全文)。

我有两个字段,一个称为“caption”,另一个称为“shortCaption”。“caption”字段包含 500,000 行数据,长度在 150 到 2000 个字符之间,新的“shortCaption”字段为空。

我的“标题”字段中的可搜索信息主要在前 300 个字符中,因此为了加快我的全文查询,我希望有一个仅包含前 300 个字符的“shortCaption”字段,从而减少我的数据库的工作量/询问。

有没有办法在一个查询中遍历每个照片记录,获取前 300 个字符(长度(字段,300))并用较短的版本更新新字段?我正要写一个小服务器端脚本来处理这个问题,但很好奇它是否可以纯粹用 SQL 来完成,因为它会更快。

提前致谢。

4

3 回答 3

3
UPDATE tablename SET newfield = LEFT(oldfield, 300)

此查询将更新中的所有行tablename

于 2012-04-17T00:36:29.417 回答
1

可以尝试这样的事情:

UPDATE table
SET new_column = left(old_column, 300);

我对我的一个测试表进行了测试,它起作用了。只要知道查询将需要一些时间来执行超过 500K 行。

于 2012-04-17T00:37:17.820 回答
1
UPDATE table1
SET column1 = LEFT( column2, 300 ) 
于 2012-04-17T00:42:31.267 回答