建立了2张表
表1:C_MP
关键字段ID,TG_ID,大约有200万记录,并在TG_ID字段上建立索引表2:G_TG_INFO
关键字段TG_ID,大约有12万记录,并在TG_ID字段上建立索引在如下SQL
SELECT * FROM C_MP M ,G_TG_INFO G
WHERE M.TG_ID=G.TG_ID
时没有使用上索引
在命令解释计划窗口时,发现两个表都是“TABLE ACCESS FULL”把表索引重建后,在命令解释计划窗口查看,发现两个表都是“TABLE ACCESS FULL”;
把表删掉后,表和索引都重建后,在命令解释计划窗口查看,发现两个表都是“TABLE ACCESS FULL”;
把两个表都执行
analyze table c_mp compute statistics;
ANALYZE TABLE c_mp COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;
analyze table c_mp compute statistics for table for all indexes for all indexed columns;
analyze table G_TG_INFO compute statistics;
ANALYZE TABLE G_TG_INFO COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;
analyze table G_TG_INFO compute statistics for table for all indexes for all indexed columns;
后 在命令解释计划窗口查看,发现两个表都是“TABLE ACCESS FULL”;
求高手指点,我该怎么做才能是索引生效?? 索引
表1:C_MP
关键字段ID,TG_ID,大约有200万记录,并在TG_ID字段上建立索引表2:G_TG_INFO
关键字段TG_ID,大约有12万记录,并在TG_ID字段上建立索引在如下SQL
SELECT * FROM C_MP M ,G_TG_INFO G
WHERE M.TG_ID=G.TG_ID
时没有使用上索引
在命令解释计划窗口时,发现两个表都是“TABLE ACCESS FULL”把表索引重建后,在命令解释计划窗口查看,发现两个表都是“TABLE ACCESS FULL”;
把表删掉后,表和索引都重建后,在命令解释计划窗口查看,发现两个表都是“TABLE ACCESS FULL”;
把两个表都执行
analyze table c_mp compute statistics;
ANALYZE TABLE c_mp COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;
analyze table c_mp compute statistics for table for all indexes for all indexed columns;
analyze table G_TG_INFO compute statistics;
ANALYZE TABLE G_TG_INFO COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;
analyze table G_TG_INFO compute statistics for table for all indexes for all indexed columns;
后 在命令解释计划窗口查看,发现两个表都是“TABLE ACCESS FULL”;
求高手指点,我该怎么做才能是索引生效?? 索引
再加个条件,where g.tg_id=100,就用到索引了
非要使用索引就加hint
6种不走索引常见原因