索引的建立需要一定的技巧和经验,没有一定的公式,对于你上面的问题,说明如下:
1、不管是A字段还是B字段,判断有否建立索引的必要,索引列如果仅有很少的值,如性别,则没有必要建立索引,如果该字段大部分值是不同的,则建立索引可能是较好的选择。
2、如果表的数据行很少,比如几条到几百条,而且数据行较短,也没有建立的必要,如果该数据经常用到,则采用DBMS的命名缓存(Sybase)或保持Cache(Oracle)等技术,使该表数据在缓冲区中;
3、如果建立索引,则要能确定主要查询语句是否用到该索引,比如如果你对A字段建立索引,而在SQL语句中where A like '%xxx%',则DBMS还是会采用表扫描,索引就没有意义了;
4、如果你所涉及的两个查询频率很高(这两者几乎是全部),而且确信都会用到,建议你对A作索引,对A、B作组合索引,如果有时候还有不少针对B的索引,则分别对A、B作索引;如果确信该表不会频繁更新,而且更新的并发度要求不高,而且拥有足够的空间,则你可以尝试不同的组合。
5、对DBMS进行监控,确认索引的有效性并不断改进。积累你的经验。如果你经常参与的开发工作涉及的数据行经常会出现百万、千万甚至更高的,那祝贺你那,你会在短时间内提高的。如果只是开发练习程序,或小规模系统,也许几年也提高不了。