0

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

4

1 回答 1

0

一般来说,它们不会从数据库中返回。对于具有许多字段选项的高级搜索,可能还会从搜索服务器(如LuceneSphinxXapian )返回一些布尔逻辑以进行良好测量。

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

SELECT ... WHERE 1=1

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

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

%如果可能(出于性能原因),最好在开始或结束时添加 whildchar ,或者同时在字段数据中进行搜索。

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

于 2013-03-19T20:35:26.140 回答