使用php搜索包含多个字段的整个数据库表

时间:2012-03-22 09:55:08

标签: php mysql

我有一个包含大约15个字段的mysql数据库表。我想在整个字段中搜索用户输入的字符串..我不想在我的查询中使用“或”来连接多个字段,因为它会减慢处理速度。有人可以用替代方法帮助我吗?

2 个答案:

答案 0 :(得分:4)

您可以在任意数量的字段上创建FULLTEXT index。性能应该没问题(比LIKE好得多)。

示例:

ALTER TABLE table_name ADD FULLTEXT ft_index_name (col1, col2, col3);

然后查询:

SELECT * FROM table_name WHERE MATCH(col1, col2, col3) AGAINST ('search_term')

如果您需要额外的性能,请查看Sphinx,例如,它可以作为原生MySQL FULLTEXT的替代品。

答案 1 :(得分:3)

如果您不想使用OR,那么更好的方法是使用concat连接所有15个字段,然后使用like搜索针。像这样:

select * from MyTable
where concat(col1,col2,col3,col4,col5,col6,col7,col8,col9,col11,col11,col12,col13,col14,col15)
like '%myval%';

然而,我不确定性能是否会比使用OR更好。