`
kuwoleft
  • 浏览: 1078548 次
文章分类
社区版块
存档分类
最新评论

验证索引列NULL不走索引

 
阅读更多
今天遇到问题,同事问我,order by 主键列 desc 与order by 日期列(加了索引) desc ,怎么执行时间差距这么大;于是查看执行计划不一样:
order by 主键列 desc 对应 INDEX FULL SCAN DESCENDING
order by 日期列(加了索引) desc 对应 TABLE ACCESS FUL
我加hint /*+ index(table index_name) */ 强制使用索引,计划还是使用的全表扫描,很奇怪为什么没有使用索引呢?我加了hint就不应该是数据问题了吧。
最后明白了原因:主键 not null而日期列可为null,如果将日期列改为not null,执行计划会一致。

总结:Oracle可能因为索引字段列可以为Null而放弃使用索引。以下为INDEX FULL SCAN

以上sid字段(可以为null)加了索引,使用hint强制使用索引,计划依然使用全表扫描。

以上将sid列改为not null,计划选择使用了INDEX FULL SCAN DESCENDING。


以上将sid字段重新改为null,在sql索引字段上添加 is not null WHERE条件,计划选择INDEX FULL SCAN DESCENDING。


总结:索引列为null在有些情况下会影响oracle选择使用该索引,而选择使用全表扫描。在很多情况下应该注意null。




分享到:
评论

相关推荐

    唯一非聚集索引变量传入时索引失效解决方案

    为什么用不到索引IX_SF_CP_Detail_MAC2]呢? 尝试1: 把唯一非聚集索引改为非聚集索引, Done,用到索引了. Drop index ……. CREATE NONCLUSTERED INDEX [IX_SF_Cp_Detail_Mac2] ON [dbo].[SF_Cp_Detail] ( [Mac2] ASC...

    MySQL分区字段列有必要再单独建索引吗?

    来验证一下,下面话不多说了,来一起看看详细的介绍吧。 1、新建表effect_new(以创建时间按月分区) CREATE TABLE `effect_new` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `type` tinyint(4) NOT NULL DEFAULT...

    mysql数据库的基本操作语法

    MySQL中外键的table的外键引用列可以插入数据可以为null,不参照主表的数据。 使用子查询插入数据 insert into temp(name) select name from classes; 多行插入 insert into temp values(null, ‘jack’, 22), ...

    active_record_doctor:在生产之前确定数据库问题

    在布尔列上检测不正确的状态验证 更多功能即将推出! 想提出一个功能? 给我。 安装 首选的安装方法是将active_record_doctor添加到您的Gemfile : gem 'active_record_doctor' , group : :development 然后...

    数据库系统原理上机实验.doc

    设计相应的SQL查询验证索引有效性。 3、实验仪器设备 1) 学生每个一台PC机 2) 已安装SQL Server环境 实验4数据库的安全性、完整性 1、实验目的要求 1) 掌握自主存取控制权限的定义和维护方法; 2) 掌握实体完整性的...

    javascript验证框架

    javascript验证框架: function validateForm() { var siteVld = new vld.Validation(); siteVld.addValidObj("latData.title",'标题','Mandatory',VCC.checkMandatory); siteVld.addValidObj("latData.url",'URL'...

    sql试 题答案和试题

    A、Windows身份验证 B、SQL Server 身份验证 C、以超级用户身份登录时 D、其他方式登录时 3、SQL Server 2000 在安装之前,应留意的事项:(___) A、SQL Server 2000的任何版本在安装时都不用考虑操作系统的...

    C++课程作业-基于Qt实现的链表操作演示系统源码(含详细注释+报告).zip

    (6)能够对各种特殊情况如索引不合法等进行判断并给出提示。 1.3 设计思想 根据题意,需要对不同链表进行同样的几项基本操作,实现标准交互式图形界面,可以 分为算法设计和界面设计两部分。 算法设计方面:对于...

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    12.5.1 列出所有的Shard Server 12.5.2 查看Sharding信息 12.5.3 判断是否是Sharding 12.5.4 对现有的集合进行Sharding 12.5.5 新增Shard Server 12.5.6 移除Shard Server 12.6 本章小结 第13章...

    深入云计算 MongoDB管理与开发实战详解pdf.part2

    12.5.1 列出所有的Shard Server 12.5.2 查看Sharding信息 12.5.3 判断是否是Sharding 12.5.4 对现有的集合进行Sharding 12.5.5 新增Shard Server 12.5.6 移除Shard Server 12.6 本章小结 第13章...

    SQL Server 2008管理员必备指南(超高清PDF)Part1

    10.5.4 允许和不允许Null值 10.5.5 使用默认值 10.5.6 使用稀疏列 10.5.7 使用标识和全局唯一标识符 10.5.8 使用用户定义的表类型 10.6 使用视图 10.6.1 操作视图 10.6.2 创建视图 10.6.3 修改视图 10.6.4 使用可...

    SQL Server 2008管理员必备指南(超高清PDF)Part3

    10.5.4 允许和不允许Null值 10.5.5 使用默认值 10.5.6 使用稀疏列 10.5.7 使用标识和全局唯一标识符 10.5.8 使用用户定义的表类型 10.6 使用视图 10.6.1 操作视图 10.6.2 创建视图 10.6.3 修改视图 10.6.4 使用可...

    SQL Server 2008管理员必备指南(超高清PDF)Part2

    10.5.4 允许和不允许Null值 10.5.5 使用默认值 10.5.6 使用稀疏列 10.5.7 使用标识和全局唯一标识符 10.5.8 使用用户定义的表类型 10.6 使用视图 10.6.1 操作视图 10.6.2 创建视图 10.6.3 修改视图 10.6.4 使用可...

    数据库基础

    §3.3.8 标记不使用的列和删除不使用的列 104 §3.3 主键 106 §3.3.1 创建主键 106 §3.3.2 改变主键 109 §3.3.3 删除主键 109 §3.4 外部键 110 §3.4.1 建立外部键 110 §3.4.2 修改外部键 112 §3.4.3 删除外部...

    SQL培训第一期

    属性不依赖于其它非主属性,确保数据表中的每一列数据都和主键直接相关,而不能间接相关,即要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。 1.5.3.2 举例 党员表 党员Id 党员姓名 组织Code 符合3NF ...

    SQL.Server.2008管理员必备指南.part2.rar(2/4)

    (本书由4部分组成,需下载完4个文件之后,放在同一文件目录下才能正常解压) 基本信息  作者:(美国)(William R.... 10.4.8 在一个表中添加和删除列 293  10.4.9 编写表脚本 294  10.5 管理表的值 294  10.5.1...

    SQL.Server.2008管理员必备指南.part1.rar(1/4)

    (本书由4部分组成,需下载完4个文件之后,放在同一文件目录下才能正常解压) 基本信息  作者:(美国)(William R.... 10.4.8 在一个表中添加和删除列 293  10.4.9 编写表脚本 294  10.5 管理表的值 294  10.5.1...

    SQL.Server.2008管理员必备指南.part3.rar(3/4)

    (本书由4部分组成,需下载完4个文件之后,放在同一文件目录下才能正常解压) 基本信息  作者:(美国)(William R.... 10.4.8 在一个表中添加和删除列 293  10.4.9 编写表脚本 294  10.5 管理表的值 294  10.5.1...

    SQL.Server.2008管理员必备指南.part4.rar(4/4)

    (本书由4部分组成,需下载完4个文件之后,放在同一文件目录下才能正常解压) 基本信息  作者:(美国)(William R.... 10.4.8 在一个表中添加和删除列 293  10.4.9 编写表脚本 294  10.5 管理表的值 294  10.5.1...

Global site tag (gtag.js) - Google Analytics