我不是db家伙。但我需要创建表格并对它们执行CRUD操作。如果我在默认情况下在所有列上创建索引 ,我是否会感到困惑?这是我在创建索引时考虑的理解。决定何时在数据库的表列创建索引?
索引基本上包含内存位置范围(第一个值存储到结束内存位置的起始内存位置,最后一个值为 )。所以当我们在表索引中插入任何值时,需要更新列,因为它有更多值,但更新列 值不会对索引值产生任何影响。 对不对?因此,底线是当我的列用于两个表之间的连接时,我们应该考虑 在连接中使用的列上创建索引,但所有其他列可以跳过,因为如果我们在它们上创建索引,则会涉及额外成本 更新索引值在列中插入新值时。 对不对?
考虑这种情况,其中表mytable
包含两列三列,即col1
,col2
,col3
。现在我们启动此查询
select col1,col2 from mytable
现在有两种情况。在第一种情况下,我们在col1
和col2
上创建索引。在第二种情况下,我们不创建任何索引**根据我的理解, 情况1将比情况2更快,因为在情况1中,oracle可以快速找到列存储器位置。所以在这里我没有使用任何连接列,但 仍然索引在这里帮助。所以,我应该考虑在这里或不创建索引?**
如果在相同的情况下上述,如果我们火
select * from mytable
代替
select col1,col2 from mytable
将索引帮助这里是什么?
索引对SELECT子句中的值不做任何操作。重要的是ON子句或WHERE子句中的字段列表。 – Bill
@ Bill - Oracle是否可以使用覆盖索引?我是一个SQL Server的人,我知道Oracle处理索引有点不同,但我认为在某些情况下它仍然使用覆盖索引。 –
@Tom:呵呵。每天学些新东西。我也是一个MSSQL的家伙,并不知道这一点。尽管如此,覆盖索引似乎只有在你处理大量R而不是CUD时才有用。 – Bill