更新表中每行的最佳方法是什么?

时间:2010-05-11 18:55:47

标签: php mysql phpmyadmin

我有一张名为艺术家的桌子。在其中,有一个艺术家姓名字段(artist_name)。然后有一个SEO友好艺术家名称的字段,我们称之为search_name。

我在这张桌子上有超过40,000名艺术家。所以,我想将所有艺术家的名字转换为友好搜索。完成此任务的最佳方法是什么?不在这里寻找代码,只是想法。

这就是我到目前为止所拥有的。我只是不确定是否应该给所有40,000名艺术家打电话,循环播放并更新?

//此艺术家名称是否包含任何符号,撇号等。如果是,请将其删除

//这位艺术家是否有空间(披头士乐队)?如果是这样,请替换为+(+ beatles)。

//插入搜索字段

3 个答案:

答案 0 :(得分:0)

你可以通过创建一个两列宽的二级表(id,safe)并从那里插入它。

查询表1

将艺术家姓名转换为安全名称

插入表2

使用两个表的id来匹配它们。这只允许一对一的匹配,但如果id是索引,如果你想要一个艺术家的多个安全名称(id | artistID | artistName),你可能想要创建第三列

答案 1 :(得分:0)

请考虑使用一些全文搜索引擎。例如,免费sphinx search - 它非常灵活,速度非常快,并且支持词干。

答案 2 :(得分:0)

由于40,000条记录不是那么多,我会抓住它们并在内存中循环它们。通过在内存中进行,独特的检查应该非常快。

最后,我只是将命令链接在一起,如:$ query。=“UPDATE artists SET search_name = $ generated_name [$ i] WHERE id = $ id [$ i];”。

顺便说一下:我用减号代替空格。