为什么下述语句我的索引用不上?SELECT a.C_DPT_CDE,
b.C_PLY_NO
FROM t_sap_skdat_hist a, t_fin_plyedr_coldue b
WHERE a.C_FROM_KEY = b.c_rcpt_no其中我在表t_sap_skdat_hist表中对字段c_from_key建立了一个不唯一索引,在表t_fin_plyedr_coldue 表对字段c_rcpt_no建立了一个不唯一索引。可是在查询的时候它还是对上述两个表进行全表扫描,上述两个索引都是建的单列索引.
再还有我想问问复合索引和单列索引能不能进行关联,如果关联是不是索引失效!
请各位高手解答!
b.C_PLY_NO
FROM t_sap_skdat_hist a, t_fin_plyedr_coldue b
WHERE a.C_FROM_KEY = b.c_rcpt_no其中我在表t_sap_skdat_hist表中对字段c_from_key建立了一个不唯一索引,在表t_fin_plyedr_coldue 表对字段c_rcpt_no建立了一个不唯一索引。可是在查询的时候它还是对上述两个表进行全表扫描,上述两个索引都是建的单列索引.
再还有我想问问复合索引和单列索引能不能进行关联,如果关联是不是索引失效!
请各位高手解答!
执行show parameter optimizer看看参数的设置
加入hint可以提示sql采用索引,例如:
SELECT /*+index(index_name1,index_name2)*/a.C_DPT_CDE,
b.C_PLY_NO
FROM t_sap_skdat_hist a, t_fin_plyedr_coldue b
WHERE a.C_FROM_KEY = b.c_rcpt_no
索引列可以进行关联,一般情况下不会使索引失效
在8及以下版本使用复合索引时需从符合索引的第一列开始使用,如果直接使用后面的列,索引不会生效,9中对索引加入了自动跳转功能,不受这个限制