我有一个非常高效的Sphinx查询在处理一个表。然而,查询的一部分不幸需要一个大型的'OR‘语句,其中包括100个选项。狮身人面像
@(field) (1|2|..|800)
非常糟糕的是,花费了1分钟的时间,而Mysql中的同一个管道查询需要<1秒才能执行。
field in (1,2,..,800
甚至是
Field =1 or Field=2 or Field=... or Field=800。
是否有一种将两者合并在一个查询中的方法?
发布于 2016-10-20 16:26:32
狮身人面像可以对属性执行in(..)查询。
可能不如mysql有效(至少是索引列)
sphinxQL> SELECT * FROM index WHERE MATCH('...') AND attrib IN (1,2,...) 发布于 2016-10-23 01:32:43
如果attrib是VARCHAR,那么这对MySQL是最好的:
WHERE attrib IN ('1', '2', ...)如果它是数字的,那么这对于MySQL来说是最好的:
WHERE attrib IN (1, 2, ...)请注意,使用常量是错误的类型可能导致严重的低效率。
https://stackoverflow.com/questions/40159437
复制相似问题