我正在尝试为此查询创建位图索引:
SELECT "TAB2"."TAB2ID","TAB1"."TAB1ID"
FROM "TAB1","TAB2"
WHERE ((("TAB1"."YESNO" = 'Y' )
AND ("TAB2"."LOCID" = "TAB1"."LOCID" ) )
AND ("TAB2"."YESNO" = 'Y' ) )
ORDER BY "TAB1"."LOCNO";
我已经尝试了多个位图索引,但是它们似乎都没有被使用,即使我尝试给查询提示使用位图索引。即使只是tab2上的索引也似乎没有做任何事情。
这是我尝试过的但是没有做任何事情,即使在收集索引和表格统计数据之后:
CREATE BITMAP INDEX TAB2_TAB1_BIT_IDX
ON TAB2(TAB2.YESNO,TAB1.YESNO)
FROM TAB1 , TAB2
WHERE TAB2.LOCID = TAB1.LOCID
Tab1包含2个N和29个Y,Tab2包含30000个N' N'和240000' Y'。 应该是位图索引的代码,还有其他方法来优化此查询吗?
答案 0 :(得分:1)
一定是这个:
CREATE BITMAP INDEX TAB1_BIT_IDX ON TAB1 (YESNO);
CREATE BITMAP INDEX TAB2_BIT_IDX ON TAB2 (YESNO);
一般说明:通常表上的单个位图索引对此没有多大帮助。定义多个位图索引时获得的位图索引的巨大收益。 单个位图索引具有低选择性,但几个索引的组合应该是选择性的。在这种情况下,您可以正确使用位图索引!