Oracle 在表上创建索引后,在查询时如何制定使用该索引。
发布网友
发布时间:2022-04-08 07:29
我来回答
共3个回答
热心网友
时间:2022-04-08 08:58
访问的数据比例超过一定范围,优化器会认为full table scan的成本更低,此事走索引扫描反而会使总成本变大,因此,索引用来快速访问表中的少量记录,对于访问表中的大量记录是不适合用索引的。追问范围区间并没有多少数据。只是总表数据量大。只是partition_ID不是主键索引。
热心网友
时间:2022-04-08 10:16
创建索引不是为了在sql语句中用的,而是可以大大提高系统的性能。
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
热心网友
时间:2022-04-08 11:51
/*+INDEX(I_DJUNCHECKHIS_PARTITIONID)*/对吗?
我记得是 /*+INDEX(表名 索引名)*/
建议先对表做一下分析,再看看执行计划,
begin
dbms_stats.gather_table_stats (ownname=>'用户',tabname=>'表名',cascade=>TRUE);
end;
建议不要轻易的干涉优化器,除非有百分百的理由!