我必须实现用户在搜索字段中输入一些文本的功能,我需要查询并从表中提取与该文本相关的项目。在表中,我有将近 8 列面向用户和 4 列,只要通过前端发生插入就会自动插入。
下面是我写的查询,它通过 mysql 客户端运行,
select SQL_CALC_FOUND_ROWS *
from `database`.`ttable`
WHERE testdatetime BETWEEN '2012/05/01' and '2012/09/27'
and testimg IS NOT NULL
and testtitle LIKE 't%'
OR testname LIKE 't%'
OR testaddr LIKE 't%'
OR testph LIKE 't%'
OR testoffs LIKE't%'
OR testmaps LIKE 't%'
OR testimg LIKE 't%'
OR testdatetime LIKE 't%'
order by testdatetime desc;
现在出于某种原因,这个查询对我来说看起来有点奇怪,因为我正在检查每个列的值,并想检查这是否是实现它的正确方法,或者 mysql 有一些内置的功能可以产生比这个查询更好的结果.如果有人能指出我正确的方向,我将不胜感激。由于我尚未实现此功能,我不知道它在性能方面的表现如何,但我知道 Like 子句在操作上有点密集。
最佳答案
您最好使用全文搜索来搜索字符串而不是 like 语句。这样您还可以找到搜索词的变体。这是 MySQL 的全文搜索链接 http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
关于mysql - 改进我的 sql 查询以在表的所有列中搜索文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12644693/