Heim  >  Artikel  >  Datenbank  >  Oracle索引被抑制情况

Oracle索引被抑制情况

WBOY
WBOYOriginal
2016-06-07 16:49:25973Durchsuche

在做Oracle数据库调优的很多情况下,都可以通过增加索引来提高数据库的性能,但是有些情况下DBA也是无能为力的,因为该有的索引都

前言、在做Oracle数据库调优的很多情况下,都可以通过增加索引来提高数据库的性能,,但是有些情况下DBA也是无能为力的,因为该有的索引都已经创建了,但是由于开发人员所写的SQL语句的问题导致不能走索引,那么这种情况下就需要修改语句来;

测试环境的说明:

由Oracle索引来理解ArcSDE索引

Oracle索引技术之如何建立最佳索引

Oracle索引列NULL值引发执行计划该表的测试示例

Oracle索引 主键影响查询速度

Oracle索引扫描  

情况一、TO_CHAR和TO_DATE的使用

以下两条语句实现的功能都是一样的,但是两条的执行计划是不一样的,有一条会走索引,还有一条不走索引:

select count(*) From JOHN WHERE LASTRUNTIME>TO_DATE('2014-03-05 11:00:00','yyyy-MM-dd HH24:mi:ss');

select count(*) From JOHN WHERE TO_CHAR(LASTRUNTIME,'yyyy/MM/dd HH24:mi:ss')>'2014-03-05 11:00:00';

 

原因:JOHN_TIME索引记录的是DATA的值,而不是to_char后的值,所以语句一会走索引,语句二走全表扫描;

 

情况二、在条件中使用表达式

select count(*) From JOHN WHERE LASTRUNTIME>SYSDATE-100;

select count(*) From JOHN WHERE LASTRUNTIME-100>SYSDATE;

 

原因:JOHN_TIME索引记录的是DATA的值,而不是DATA-100后的值;

总结:1、不要轻易在字段前增加函授;

2、尽量不要将字段嵌入到表达式中;

总而言之:就是有索引的那列不能进行任何的相关操作,单独的放在等式的一边;

本文永久更新链接地址:

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn