【发布时间】:2016-11-24 13:47:44
【问题描述】:
我是 php 开发人员,但我遇到了 MySQL 全文搜索的问题。
这是我的查询
select distinct j.jobid,headline,company,country,state,city,location,
date_format(str_to_date(posted_dt, '%m-%d-%Y %H:%i:%s' ), '%M %d, %Y') posted_dt,joblinks
from jobs j
left join job_filters jf on jf.jobid = j.jobid
left join job_emptype_map em on j.jobid = em.jobid
left join job_sub_emptype_map sem on em.jobid = sem.jobid and em.emp_type = sem.emp_type
where status=1
And MATCH (headline,description,pri_skills,company) AGAINST ('java developer' IN natural language MODE) > 1
And MATCH (location,country,state,city,zipcode,other_loc) AGAINST ('california, United States' WITH QUERY EXPANSION ) > 1
order by str_to_date(posted_dt,'%m-%d-%Y %H:%i:%s') DESC limit 0,25
我通过上述查询得到了正确的结果。但它需要(显示第 0 - 24 行(共 25 行,查询耗时 50.6951 秒。)
当我更改关键字“ui developer”而不是“java developer”时,我得到 0 个结果
如果我用类似的功能检查关键字“ui developer”,那么我会得到结果。
我不明白为什么匹配功能仅适用于某些关键字,以及为什么当我的托管计划是云时它会花费太多时间。
【问题讨论】:
-
原来查询慢的原因,是因为可怕的
order by子句。将日期存储为实际日期并添加索引。