我有一个MySQL数据库表,其中包含数千行的人名。
我正在编写此表的搜索脚本,以显示存储在表中的最相似的名称。
所以我考虑获取表的所有行,然后使用FOREACH循环调用similar_text()(返回百分比数的函数),然后在表上只显示匹配60%相似度的名称。
如果这样做(获取所有行),我的网站性能会降低太多吗? 我的服务器带宽会因此受到影响吗?
ps:'SOUNDS LIKE'MySQL命令对这种情况没有多大帮助
答案 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开头的行。