这个问题很小白:
假如创建一个表 :create table T (A int4,B int4,C varchar)
在表上做这样的查询:select C from T where A=a AND B=b;
如何在A,B上创建单列和多列索引!
我对单列和多列概念不是很清晰!

解决方案 »

  1.   

    我在手册上看见:
    (1)在x和y上个创建一个单列索引。当处理同时引用x和y的查询时,可以同时扫描x和y上的索引,然后对两个扫描结果求交集。(2)可以选择在x 和y上创建一个多列索引,这个索引对于同时引用x和y的查询很有用,它也可以用于只引用x的查询,但它对于只引用y的查询却没有什么用处。(3)在y上创建一个单列索引,同时在x和y上创建一个多列索引。这种方式创建的索引比较多,要消耗较多的资源维护索引和表中数据的同步。(4)在x和y上各创建一个单列索引,同时在x和y上创建一个多列索引。这种方式创建的索引过多,要消耗大量资源维护索引和表中数据的同步。
      

  2.   

    根据这个语句应该创建 (a,b) 或者(b,a)的复合索引。 要看你的A中不同的值多还是B中不同的值多,哪个多就哪个在前。
      

  3.   

    主要是我今天对一个1千万的表建了2个索引
    然后根据2个字段去掉重复的 SELECT 1 FROM TABLE ORDER BY A ,B 出来9W跳
    但是我看了一下 时间 感觉建了索引还是慢!(不知道有没有命中,等一下看看解释)
    所以就开始研究索引!