2012-03-15 19 views
3

我有一个MySQL数据库表与人名与成千上万的行。MySQL:获取所有行以进行搜索?

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

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

如果这样做(提取所有行),我的网站性能会减慢太多吗? 我的服务器带宽会因此而受损吗?

PS:“听起来像是” MySQL命令没有太大的帮助在这种情况下

+0

什么是similar_text吗?你可以发布代码,以便我们可以看到它是否可以转移到数据库进行处理? – iWantSimpleLife 2012-03-16 01:12:16

+0

http://php.net/similar_text – user1091856 2012-03-16 01:16:16

回答

1

是的,这将你的网站最有可能放缓,尤其是在你的网站的增长,你有许多用户同时搜索。

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

+0

您是否在MySQL语句中使用了similar_text()? – user1091856 2012-03-15 23:09:22

相关问题