2016-02-02 56 views
1

在表I第4列:哪种索引方法在我的情况下更好?

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

我有两个查询,如下所示:

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

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

立即索引的方法:上

  • 指数(A,B,C) (a,b,d)
  • 索引

OR上(d)是(a,b)中

  • 索引

    • 指数(c)上
    • 索引

    哪一个较好的方法?

  • +0

    它不起作用。索引的选择将基于表中数据的选择性和维护索引的成本。没有人可以给你一个不知道这些的答案。 –

    +0

    @JakubKania我想知道,我的第二个索引方法会起作用吗? –

    +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";

    硒e以及http://www.postgresql.org/docs/9.5/static/sql-explain.html

    +0

    我有30GB的数据,所以表扫描不好。并且列不是唯一的。 –

    相关问题