MySQL:获取所有行进行搜索?

时间:2012-03-15 22:55:58

标签: php mysql

我有一个MySQL数据库表,其中包含数千行的人名。

我正在编写此表的搜索脚本,以显示存储在表中的最相似的名称。

所以我考虑获取表的所有行,然后使用FOREACH循环调用similar_text()(返回百分比数的函数),然后在表上只显示匹配60%相似度的名称。

如果这样做(获取所有行),我的网站性能会降低太多吗? 我的服务器带宽会因此受到影响吗?

ps:'SOUNDS LIKE'MySQL命令对这种情况没有多大帮助

2 个答案:

答案 0 :(得分:2)

让数据库进行搜索。

看到这个问题,看起来像你需要的:How to find similar results and sort by similarity?

答案 1 :(得分:1)

是的,这很可能会减慢您的网站速度,特别是当您的网站增长并且有许多用户同时搜索时。

如果可能,请使用数据库内的存储过程或用户定义的函数进行搜索。即使你不知道你正在寻找的条目的确切拼写,如果你知道第一个字母,你可以加快搜索速度。您可以使用类似WHERE name LIKE 'F%' AND similar_text(name, 'FOOBAR') > 0.6的内容,因为索引可用于仅查找以F开头的行。