我正在为公司的Intranet构建一个相当大的“搜索”引擎,其中包含100万个条目
它在相当快的服务器上运行,但是某些搜索查询最多需要1分钟的时间。
这是桌子的样子
我尝试为其创建索引,但是好像我缺少什么,这就是show index的显示方式
而这本身就是查询本身,这是导致查询速度降低的主要原因,但是即使没有排序的查询也有些慢。
SELECT SQL_CALC_FOUND_ROWS *
FROM `businessunit`
INNER JOIN `businessunit-postaddress` ON `businessunit`.`Id` = `businessunit-postaddress`.`BusinessUnit`
WHERE `businessunit`.`Name` LIKE 'tanto%'
ORDER BY `businessunit`.`Premium` DESC ,
CASE WHEN `businessunit`.`Name` = 'tanto'
THEN 0
WHEN `businessunit`.`Name` LIKE 'tanto %'
THEN 1
WHEN `businessunit`.`Name` LIKE 'tanto%'
THEN 2
ELSE 3
END , `businessunit`.`Name`
LIMIT 0 , 30
很感谢任何形式的帮助
编辑:
令该查询困扰的原因是,有99%是与通配符
%
相关的排序当我做一个解释时,它说在哪里使用;使用fsort
最佳答案
您应该尝试狮身人面像搜索解决方案,它是全文搜索引擎,将为您提供非常好的性能以及许多设置相关性的选项。
Click here了解更多详细信息。