替代Sphinx中的布尔OR?

时间:2016-03-28 16:51:42

标签: sphinx

我有一个mysql查询非常快速地用于例如

FieldA in (X,Y,Z)

我已经转移到Sphinx,这显然要快得多,除非在这种情况下使用管道,例如

@(FieldA) (X|Y|Z)

其中X | Y | Z实际上是大约40个不同的值。 MysQl In需要0.3秒,Sphinx需要一分钟。考虑到Sphinx被证明有多快,我想知道是否有一些'IN'版本的Sphinx有多个值vs |这显然正在减缓它。

1 个答案:

答案 0 :(得分:0)

真的,这取决于很多事情。对于某些查询,更改为使用MVA可能比使用关键字更好。 (他们你有'IN'功能)

...特别是如果您有其他搜索关键字。

Sphinxes全文索引已针对回答用户输入的短查询进行了优化。要回答长“OR”样式查询,它必须加载并合并每个单词列表。并排名所有。它的所有开销。

尽管基于属性的过滤通常非常快,特别是如果您有一个高度选择性的关键字查询,它提供了相对较短的潜在匹配列表。