【发布时间】:2012-09-28 17:31:24
【问题描述】:
我必须实现用户在搜索字段中输入一些文本的功能,我需要从表中查询并拉出与该文本相关的项目。在表中,我有近 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 子句在操作中有点密集。
【问题讨论】:
-
我可能独自一人,但使用 BETWEEN 总是让我担心。根据数据库,它可能是 > 或 = 或
-
我想避免 > 或 = 或