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

3
我有一个包含成千上万人名的MySQL数据库表格。我正在编写一个搜索脚本,用于显示在表格中存储的最相似的名字。
所以我想先获取表格的所有行,然后使用FOREACH循环调用similar_text()函数(这个函数返回一个百分比数字),然后只在表格中显示与匹配60%相似度的名字。
如果我这样做(获取所有行),我的网站性能会变慢吗?我的服务器带宽会受到影响吗?
附注:在这种情况下,“SOUNDS LIKE” MySQL命令并没有太大帮助

similar_text函数是用来比较两个字符串的相似度,返回值为匹配字符数。可以给出代码以便我们查看是否能将其转移到数据库中进行处理? - iWantSimpleLife
2个回答

2

1

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

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


你在MySQL语句中使用过similar_text()函数吗? - user1091856

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接