合并 Mysql 和 Sphinx 查询?

Combine Mysql and Sphinx Queries?

我在 table 上有一个非常高效的 Sphinx 查询。然而不幸的是,查询的一部分需要一个包含 100 个选项的大型 'OR' 语句。狮身人面像在

上窒息

@(field) (1|2|..|800)

非常糟糕,需要长达一分钟,而 Mysql 中的同一管道查询需要 <1 秒,无论是否执行

field in (1,2,..,800

甚至

Field =1 or Field=2 or Field=... or Field=800

有没有一种方法可以将两者结合在一个查询中?

Sphinx 可以对属性进行 in(..) 查询。

可能不如 mysql 有效(至少如果是索引列)

sphinxQL> SELECT * FROM index WHERE MATCH('...') AND attrib IN (1,2,...) 

如果 attrib 是 VARCHAR,那么这最适合 MySQL:

 WHERE attrib IN ('1', '2', ...)

如果是数字,那么最适合MySQL:

 WHERE attrib IN (1, 2, ...)

请注意,常量类型错误会导致严重的低效率。