0
一般来说,如果在有多种不同的可能性,列,表格,结果等的情况下优化了20-30个可选字段,那么如何从“高级搜索表单”生成MySQL查询?如何从“高级搜索表单”优化查询?
一般来说,如果在有多种不同的可能性,列,表格,结果等的情况下优化了20-30个可选字段,那么如何从“高级搜索表单”生成MySQL查询?如何从“高级搜索表单”优化查询?
一般来说,它们不会从数据库中返回。使用具有许多字段选项的高级搜索,并且可能还会从搜索服务器(例如Lucene,Sphinx或Xapian)返回一些用于良好度量的布尔逻辑。
从数据库返回几乎不可能有效。它通常是动态生成的查询,如做:
SELECT ... WHERE 1=1
然后,环比对方字段并添加
AND field LIKE '%abc'
AND field_2 LIKE '%def%'
AND field LIKE 'GHI%'
Idealy加入whildchar %
在开始或结束时,如果可能的(由于性能原因),或者两者都用于现场数据中的搜索。
构建和运行此查询使得它几乎不可能具有良好的索引,这使得它们变慢并且成为性能瓶颈的主要候选对象。
谢谢你的见解,史蒂夫。如果您在社交网站上进行高级用户配置文件搜索,您会继续使用搜索服务器吗? – ProgrammerGirl 2013-03-19 23:12:48
@Programmer它真的取决于有问题的数据集以及您正在搜索的字段。有时候一个好的规范化模式设计可以帮助很大 - 例如存储一个CountryId,StateId,TownId等,并且过滤附近的人更加高效,因为必须通过操作字符串来生成相同的数据。搜索服务器是为复杂的搜索而设计的,它们通常比RDBMS中的全部搜索服务器都快并且可扩展。 – Steve 2013-03-20 10:55:24