比方說,如果有一個包含50行結構簡單稱爲TB_SMALL
一張小桌子:爲了在Oracle視圖中搜索,是否需要索引列?
TB_SMALL
---------------
ID | NAME
---------------
......
......
還有另一個表持有大量所謂TB_HUGE
數據,包含一百萬行:
TB_HUGE
------------------------------------------------------------------------
ID | FIELD 1 | TB_SMALL_ID | FIELD 1 | ...... | FIELD n |
------------------------------------------------------------------------
......
......
因此,TB_HUGE
有一個索引爲TB_SMALL
的外鍵。然而,如果有需要加入這兩個表只是由特定TB_SMALL.name
搜索,我認爲它是一種常見的情況下,像這樣
SELECT TB_HUGE.*
FROM TB_HUGE JOIN TB_SMALL ON TB_HUGE.TB_SMALL_ID=TB_SMALL.id
WHERE TB_SMALL.name = "somename";
是有必要的索引TB_SMALL.NAME
列?
*可能是它不是一個很好的例子,因爲查詢可以換到
WHERE TB_HUGE.TB_SMALL_ID EXIST (SELECT ID FROM TB_SMALL WHERE NAME="somename")
但上述情況只是說明是否有必要索引列上,如果加入大的小桌子表。
「是否需要」否,它將在沒有索引的情況下工作。是否需要良好的性能?嘗試兩種方式。 – 2014-08-29 16:40:38