一般来说,当有这么多不同的可能性、列、表、结果等时,如何优化从具有 20-30 个可选字段的“高级搜索表单”生成的 MySQL 查询?
问问题
52 次
1 回答
0
一般来说,它们不会从数据库中返回。对于具有许多字段选项的高级搜索,可能还会从搜索服务器(如Lucene、Sphinx或Xapian )返回一些布尔逻辑以进行良好测量。
从数据库返回几乎是不可能有效的。它通常通过动态构建查询来完成,例如:
SELECT ... WHERE 1=1
然后,循环遍历其他字段并添加
AND field LIKE '%abc'
AND field_2 LIKE '%def%'
AND field LIKE 'GHI%'
%
如果可能(出于性能原因),最好在开始或结束时添加 whildchar ,或者同时在字段数据中进行搜索。
构建和运行此查询几乎不可能拥有良好的索引,这使它们变慢并且成为性能瓶颈的主要候选者。
于 2013-03-19T20:35:26.140 回答