我们有一个查询,它从主详细信息简单模式检索一些数据。where子句看起来像:

-- These are just random numbers
Where ticket.type_id in ( 2, 3, 4, 5, 7 ) and
      (
         ticket.color_id is null or
         ticket.color_id in ( 1, 2 , 8 )
      )

我们已经在ticket.type_id和ticket.color_id列中有了索引,但是查询解释分析仍然显示postgresql正在进行顺序扫描以满足查询。
这个查询在系统中非常重要并且经常出现,因此我们要为这个案例创建一个索引。
什么指数可以解决这个问题?

最佳答案

不太确定-但我想空值会让你…
也许像这样一个奇怪的结构

Where ticket.type_id in ( 2, 3, 4, 5, 7 ) and
      (
         nvl(ticket.color_id,1) in ( 1, 2 , 8 )
      )

关于database - 为Postgres查询设计索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10905319/

10-12 01:05