在我的情况下哪种指数方法更好?

时间:2016-02-02 07:13:16

标签: database postgresql indexing database-administration

在表格中我有4列:

optionModel.findById(optionId)
            .elemMatch('voters.user', { _id: { $eq: $userId } })
            .exec()

我有两个查询如下:

(a(int),b(int),c(var-char),d(var-char))

现在指数方法:

  • 索引(a,b,c)
  • 指数(a,b,d)

OR

  • 索引(a,b)
  • (c)
  • 上的索引
  • 指数(d)

哪一种方法更好?

1 个答案:

答案 0 :(得分:0)

最好是尝试一下。除非您知道您计划使用的数据是什么,否则无法确定哪些索引更好。最好的方法是创建表格,插入一些采样数据,然后使用EXPLAINEXPLAIN ANALYZE进行一些典型查询。

一个例子是

EXPLAIN select *from table where a=1 and b=2 and c="abc";

EXPLAIN select *from table where a=1 and b=2 and d="zyz";

EXPLAIN ANALYZE select *from table where a=1 and b=2 and c="abc";

EXPLAIN ANALYZE select *from table where a=1 and b=2 and d="zyz";

另见http://www.postgresql.org/docs/9.5/static/sql-explain.html