我不是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