oracle索引顺序,oracle的索引有什么用

小科普 137

点击上方 "程序员小乐"关注, 星标或置顶一起成长

每天凌晨00点00分, 第一时间与你相约

每日英文

If nothing can be done, then just let nature take its course.

如果无能为力,那就它顺其自然吧。

每日掏心话

一切顺其自然,专注于过程而少想结果,安于当下,不想过去亦不想未来,把每一个发生都当作一种修炼。

来自:素小暖OSC | 责编:乐乐

链接:my.oschina.net/u/4006148/blog/3225442

程序员小乐(ID:study_tech)第 834 次推文 图片来自百度

往日回顾:前后端分离模式下的权限设计方案

正文

最近在做有关查询数据库的工作,由于一个表的数据量过大,导致程序进程卡死情况出现,SQL优化迫在眉睫,索引闪亮登场!

Oracle中查询走索引的情况:

1、对返回的行无任何限定条件,即没有where子句。

2、未对数据表与任何索引主列相对应的行限定条件。

例如:在id-name-time列创建了三列复合索引,那么仅对name列限定条件不能使用这个索引,因为name不是索引的主列。

3、对索引的主列有限定条件,但是在条件表达式里使用以下表达式则会使索引失效,造成权标扫描:

(1)where子句中对字段进行函数、表达式操作,这将导致引擎放弃使用索引而进行全表扫描。

(2)查询字段is null时索引失效,引起全表查询。

解决办法:SQL语法中使用null会有很多麻烦,最好索引列时not null的;对于is null,可以建立组合索引, nvl(字段,0),对表和索引analyse后,is null查询时可以重新启用索引查找,但是效率还不是值得肯定;is not null时永远不会使用索引。一般数据量大的表不要用is null查询。

(3) 查询条件中使用了不等于操作符(

上一篇:

下一篇:

  推荐阅读

分享