create index Stuname on student(name)
create index Stusex on student(sex)
create index Stugrade on student(grade)
注意的问题,考虑是不是要建立唯一索引(unique),如果有学号的话,可以考虑建立唯一索引引。
再就是对经常查询,但又相对稳定的可以建立聚簇索引,提高查询效率
Oracle查询优化器会感知到你建立的索引,在有对应字段谓词出现的时候就会自动使用。但是在某些情况下Oracle查询优化器则无法使用索引,例如
含有隐式类型转换
使用OR来连接谓词
字段上使用了函数或是表达式
索引扫描代价大于全表扫描
not in
like '%xxx'
强制加索引使用hint即可 例如 select /*+index(table_name,index_name)*/ * from table_name where xxxx
现在的问题是,如果你所查询的字段有索引,表也做过表分析,统计数据是正确的,写法也没问题。CBO会自主判断,选择合适的索引的。hint方式只是在CBO判断出错时,我们人工进行干预执行计划。尽量让CBO自己来工作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)