在Oracle中使用表时,您如何知道何时设置好索引而不是坏索引?
解决方法
这取决于你的“好”和“坏”的含义.基本上你需要意识到你添加的每个索引都会提高该列搜索的性能(因此在person表的’lastname’列中添加索引会提高在其中包含“where lastname =”的查询的性能)但是降低整个表的写入性能.
原因是当您添加或更新行时,它必须添加或更新表本身以及该行所属的每个索引.因此,如果表上有五个索引,则每个添加必须写入六个位置 – 五个索引和表 – 并且在最坏的情况下更新可能会触及六个位置.
索引创建是查询速度和写入速度之间的平衡行为.在某些情况下,例如一个数据集市,每周只在一夜工作中加载一次数据但每天查询数千次,因此重载索引并尽可能加快查询速度是非常有意义的.但是,对于在线交易处理系统,您希望尝试在它们之间找到平衡点.