我有一个SQL查询,例如:
SELECT * FROM TAB1 NATURAL JOIN TAB2 WHERE TAB1.COL1 = 'RED'
如何优化此查询以在Oracle中使用索引而不使用位图索引?
答案 0 :(得分:1)
注意:这回答了问题的原始版本。
首先,不要使用NATURAL JOIN
。这是一种憎恶,因为它没有使用正确声明的外键关系。它只使用具有相同名称的列,这会产生误导性的结果。
其次,由于两个原因,查询在语法上是不正确的。首先,"Red"
是对列的引用,而不是字符串值。该表是否具有名为"Red"
的列。第二个原因是你有一个自我加入,所以ROW1
是不明确的。
这引发了更大的问题。你的查询根本没有任何意义。您正在将表连接到自身,返回重复的列。结果是什么?相当不确定:
NULL
值,则不返回任何行。NULL
值),那么您将得到一个包含N ^ 2行和重复列的结果集,其中N是表中的行数。< / LI>
我无法想到查询的任何用途。我认为没有理由尝试优化它。
如果您有想要讨论的真实查询,我建议您提出另一个问题。