我有一个Ecto查询,该查询在一组值中查找包含一列的行。这样的事情(使用虚构的博客域):
Post
|> where(state in ^["published", "draft"])
这将生成如下子句:
p0.state = ANY($1)
以["published", "draft"]
作为参数。
数据库为Postgres 9.6。运行说明显示此查询的成本比supposed to be the equivalent clause高得多(很多数量级):
p0.state in ($1)
我在state
上有一个索引。
我不知道这是否是由于Postgres本身的性能问题引起的,但是我发现了一些提示。
我希望能够解决性能问题,或者影响Ecto来生成p0.state in ($1)
。
有什么建议吗?