合并 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, ...)
请注意,常量类型错误会导致严重的低效率。
我在 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, ...)
请注意,常量类型错误会导致严重的低效率。