对于Oracle和相对于应用程序调优,何时在表上没有索引以及为什么有意义?
答案 0 :(得分:4)
拥有索引会产生相关成本:
这些成本应该被更高效的查询处理(更快,更少的I / O)的好处所抵消。
如果索引的使用不足以证明成本合理,那么索引将为负数。
答案 1 :(得分:2)
特别是,如果您的数据分布很低(想想'Y'和'N'之类的标记),索引将无济于事。可以这样想:如果索引中的不同值的数量很少,优化器可能会选择不使用索引。有趣的是,如果索引中的列为null,如果查询条件包含实际值,则可能会快得多,因为空值未被索引,这意味着只有实际值(非null)在该特定索引中,从而不评估表中的大多数行。在“is null”的情况下,它永远不会使用索引 - 如果你有一个带有“where”子句的查询,比如“mytable.mycolumn is null”,那么放弃所有在这里输入的索引。
答案 2 :(得分:1)
如果一个表的数据非常少(行数很少),那么它就无法使用索引。索引可以快速搜索特定属性,如果您正在使用的应用程序不需要快速查找,那么使用索引对您来说很少。