如何从“高级搜索表单”优化查询?

时间:2013-03-19 20:26:33

标签: mysql query-optimization

一般来说,当有很多不同的可能性,列,表格,结果等时,如何从“高级搜索表单”生成的MySQL查询如何优化20-30个可选字段?

1 个答案:

答案 0 :(得分:0)

一般来说,它们不会从数据库返回。对于具有许多字段选项的高级搜索,可能还会从搜索服务器(例如LuceneSphinxXapian)返回一些用于衡量标准的布尔逻辑。

从数据库返回几乎不可能有效地完成。它通常通过动态构建查询来完成,例如:

SELECT ... WHERE 1=1

然后,循环遍历其他字段并添加

AND field LIKE '%abc'
AND field_2 LIKE '%def%'
AND field LIKE 'GHI%'

希望在开始或结束时添加whildchar %(出于性能原因),或者在字段数据中搜索两者。

构建和运行此查询使得几乎不可能有良好的索引,这使得它们变慢并且成为性能瓶颈的主要候选者。