使用mysql进行高级搜索

时间:2010-05-13 10:00:38

标签: php mysql

我正在为我的网站创建一个搜索功能,用户可以在文本字段中输入任何他喜欢的内容。它与任何东西相匹配(名称,职称,工作,汽车品牌,......你的名字)

我最初在每个需要搜索的表上用INNER JOIN编写查询。

SELECT column1, column2, ... FROM person INNER JOIN person_car ON ... INNER JOIN car ...

这最终出现在一个有6个或8个INNER JOIN的查询中,并且很多WHERE ... LIKE'%searchvalue%'

现在这个查询似乎在MySql中引起了时间问题,我甚至从我的托管服务提供商那里得到一个警告,即查询占用了太多资源。

现在显然我做错了,但我想知道这种搜索功能的正确方法是什么。

2 个答案:

答案 0 :(得分:1)

使用多个查询或UNION多个查询,以便它们进入单个结果集。

此外,使用FULLTEXT索引很可能有助于加快查询速度,因为(LIKE'%string%') - 尤其是前导'%' - 非常慢(所有行都需要在不使用索引的情况下进行检查)< / p>

答案 1 :(得分:0)

我建议实施LuceneSphynx搜索引擎,它们比sql查询更快,更具可扩展性。