mysql 的索引怎么做自平衡的

如题所述

1.由于唯一索引扫描效率最高,因此能使用唯一索引,尽量使用唯一索引;
2.对于取值基数较少的字段,如性别、状态、Check项,尽量使用位图索引;
3.由于NULL值在索引中没有定义,因此建议尽量不要在允许NULL值的列上建立索引,虽然Oracle宣称在允许NULL值的列上位图索引,也是有效的,但我们依然强烈建议可以将null指定为一个默认的值后再建立索引;
4.根据实际情况,一般对于列不超过10个,数据不超过1万行的表不要建立索引,此种情况在应用中往往能占40%以上;
5.一个表中不是建立的索引越多越好,相反过多的索引可能影响整体的性能,至少影响INSERT、DELETE和UPDATE的性能;
6.对于查询中的WHERE子句经常需要使用多个AND条件一起使用时,应建立联合索引,一般情况下,此种联合索引是标示一行唯一记录的,而主键使用代理主键,并且尽量将值少的列放在前面;
7.对于多表联合查询,及表连接的问题,对于连接的字段,需要建立索引;
8.平衡索引与更新的关系。如果一个大表的更新操作多于查询操作,建议可以少建立索引;如果一个大表的查询操作多于更新操作则可以考虑多使用索引。

索引之性能体验和监测案例
1.Oracle Explain Plan结果中几个重要名次解释
(1)COST:

Oracle依据其查询优化器选择的执行路径估算的操作开销(也称为成本、耗费)。开销并不决定表的访问操作,其值不具备任何特定的度量单位,仅仅代表该
执行计划的加权值,是通过IO_COST和CPU_COST计算得出的(oracle文档中未公布算法)。
(2)CPU_COST: 查询优化器需要的CPU操作开销估算值,其值与操作所需的机器运转周期成正比。
(3)IO_COST:查询优化器需要的IO操作开销估算值,其值与读取的数据块成正比。

1.Oracle Explain Plan结果中几个重要名次解释
(4)CARDINALITY: 查询优化器访问的数据行的估算基数。
(5)TIME:查询优化器消耗的时间估算值(单位为秒)。
2.删除索引
将表account_trade上的所有索引均删除掉
3.性能监测体验
使用SQL语句

3.性能监测体验--使用SQL语句

l开销降低47%、执行时间提高31%
l此外还有多种查看方式:SQL窗口查询、PL/SQL DEVELPOER 解释计划窗口、通过toad查看等
温馨提示:答案为网友推荐,仅供参考
相似回答