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