比方说,如果有一个包含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