我的工作在我的桌子上創建一些列的索引索引在Oracle數據庫中的表
Q1:什麼是對單個列(ID-'separate「 COLUMN1-'separate」)創建索引的區別和列組合(id,列'合併')?
要添加更多細節-ID是不是在我的表
Q2的唯一密鑰:請問在合併列索引加快我的查詢時,我用兩列在where子句中篩選數據?
請讓我知道這件事。
此外,可以幫助我更好地瞭解索引的良好資源受到歡迎。
在此先感謝。
AVG
我的工作在我的桌子上創建一些列的索引索引在Oracle數據庫中的表
Q1:什麼是對單個列(ID-'separate「 COLUMN1-'separate」)創建索引的區別和列組合(id,列'合併')?
要添加更多細節-ID是不是在我的表
Q2的唯一密鑰:請問在合併列索引加快我的查詢時,我用兩列在where子句中篩選數據?
請讓我知道這件事。
此外,可以幫助我更好地瞭解索引的良好資源受到歡迎。
在此先感謝。
AVG
它是不同的,它取決於你的查詢 考慮的表T(A,B,C) 如果你只有使用查詢 「其中A = V1和B = V2」,你」如果你有查詢「where A = V1」而其他的查詢「where B = V2」,那麼你寧願去索引(A,B) ,如果你有兩種類型的查詢,你寧願去找2個索引 , d需要一個索引(A,B)和另一個索引(B)
A1: 如果您的選擇是基於COLUMN1和COLUMN2分開的,那麼選擇兩個索引。 如果您不打算使用UNIQUE,那麼放棄組合索引的想法。 另請注意,當您添加索引時,會增加更多空間開銷,從而在巨大的插入/刪除操作期間引發性能問題。它僅在選擇和更新時顯示出良好的性能。
A2:這是不可能的。最有可能的情況是,索引將永遠不會被使用。
在我的情況下,我有兩個表(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
因此表A應該已經在id上索引,但對於表B,如果id是a關鍵是沒有必要索引employer_name,如果沒有它應該是有一個組合索引的一些收益(我只是猜測你沒有在表A顯示B的外鍵) – Gar