2013-09-16 73 views
1

我的工作在我的桌子上創建一些列的索引索引在Oracle數據庫中的表

Q1:什麼是對單個列(ID-'separate「 COLUMN1-'separate」)創建索引的區別和列組合(id,列'合併')?

要添加更多細節-ID是不是在我的表

Q2的唯一密鑰:請問在合併列索引加快我的查詢時,我用兩列在where子句中篩選數據?

請讓我知道這件事。

此外,可以幫助我更好地瞭解索引的良好資源受到歡迎。

在此先感謝。

AVG

回答

1

它是不同的,它取決於你的查詢 考慮的表T(A,B,C) 如果你只有使用查詢 「其中A = V1和B = V2」,你」如果你有查詢「where A = V1」而其他的查詢「where B = V2」,那麼你寧願去索引(A,B) ,如果你有兩種類型的查詢,你寧願去找2個索引 , d需要一個索引(A,B)和另一個索引(B)

+0

在我的情況下,我有兩個表(A:ID,名稱,地址,B:ID,employer_name)。 id值的數量大約爲100k,僱主名稱的值數量只有15個.A被左外連接到B,並且我的select子句從B獲取ID,Employer_name從B獲取,where子句獲得Employer_name的條件。我的假設是因爲我們正在用他們的employer_name搜索ID's - 創建一個多列索引可以加快我的查詢速度。請讓我知道如果我錯了 – avg998877

+0

因此表A應該已經在id上索引,但對於表B,如果id是a關鍵是沒有必要索引employer_name,如果沒有它應該是有一個組合索引的一些收益(我只是猜測你沒有在表A顯示B的外鍵) – Gar

1

A1: 如果您的選擇是基於COLUMN1和COLUMN2分開的,那麼選擇兩個索引。 如果您不打算使用UNIQUE,那麼放棄組合索引的想法。 另請注意,當您添加索引時,會增加更多空間開銷,從而在巨大的插入/刪除操作期間引發性能問題。它僅在選擇和更新時顯示出良好的性能。

A2:這是不可能的。最有可能的情況是,索引將永遠不會被使用。

+0

在我的情況下,我有兩張表(A:id,名字,地址,B:id,employer_name)。 id值的數量大約爲100k,僱主名稱的值數量只有15個.A被左外連接到B,並且我的select子句從B獲取ID,Employer_name從B獲取,where子句獲得Employer_name的條件。我的假設是,因爲我們通過他們的僱主名稱搜索ID,創建一個多列索引可以加快我的查詢速度。請讓我知道是否是錯誤的 – avg998877

+0

假設Id是唯一的連接,請在兩個表上單列索引。 – SriniV