0 0

需要帮助---关于Oracle数据库使用is null禁用索引问题10

此表有不到一亿的数据,查询字段有索引,当加入OR 'XXX' IS NULL条件时,查询速度超慢,原因是避免在索引中使用任何可以为空的列,ORACLE将无法使用该索引。

我的要求:
1、就是在默认情况下使用此语句能查出数据;

2、避开禁用索引的这个问题;

3、我对数据库只有查询权限;

下面是SQL语句,希望在数据库方面精通的大侠们指点,小弟先谢过了
SELECT T_BS_RK_CZRK.RYID AS 人员ID,
T_BS_RK_CZRK.YRYBH AS 原人员编号,
T_BS_RK_CZRK.ZT AS 状态,
T_BS_RK_CZRK.XM AS 姓名,
T_BS_RK_CZRK.CYM AS 曾用名,
T_BS_RK_CZRK.GMSFHM AS 公民份号码,
T_BS_RK_CZRK.CSDXZ AS 出生地址,
T_BS_RK_CZRK.JGSSX AS 籍省市县_区
FROM dpsiid.T_BS_RK_CZRK
WHERE (T_BS_RK_CZRK.XM = 'XXX' OR 'XXX' IS NULL)
and rownum<=10
问题补充:
shahand这位仁兄说的方法是不行的,这样的话我也能想到。这个语句的要求是在执行的时候即使不给参数也能默认查询出记录。如果改成T_BS_RK_CZRK.XM = 'XXX'的话查询结果为空,将不满足我程序的要求,我的程序无法初始化。
2010年1月07日 14:46

4个答案 按时间排序 按投票排序

0 0

不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。

这好像没啥办法

2010年1月13日 10:09
0 0

OR 'XXX' IS NULL 啥意思?XXX是个字符串吗?

2010年1月12日 19:01
0 0

where 1=1 and T_BS_RK_CZRK.XM = 'XXX'

2010年1月12日 19:00
0 0

只要有这样的条件在,全表扫描就不可避免。
(T_BS_RK_CZRK.XM = 'XXX' OR 'XXX' IS NULL)

把条件改成T_BS_RK_CZRK.XM = 'XXX'能否满足你的要求,反正你也只是取十行。

2010年1月11日 10:37

相关推荐

    oracle数据库系统中启动数据库第一步-Oracle数据库基础题库【含答案】.pdf

    11. 字符串和日期:Oracle数据库中字符串和日期不一定需要双引号,取决于是否包含特殊字符或需要区分大小写。 12. 约束:可以禁用约束,但这可能影响到数据的一致性检查,通常在执行特殊操作时使用。 13. NULL值...

    oracle学习心得总结

    本文将根据提供的文档内容,总结和扩展Oracle数据库的基础知识点,帮助初级程序员更好地理解和掌握Oracle。 #### 一、Oracle 用户管理 1. **创建用户** - 命令格式:`CREATE USER 用户名 IDENTIFIED BY 密码;` ...

    oracle电子文档:数据库约束.rar

    本电子文档“Oracle电子文档:数据库约束”深入探讨了这个重要主题,帮助读者理解和掌握如何在Oracle环境中有效地实施和管理数据库约束。 一、数据库约束的类型 1. **非空约束(NOT NULL)**:此约束确保指定列不...

    完整word版ORACLE数据库期末考试题目及答案.docx

    根据提供的文档信息,这里主要涉及的是Oracle数据库的相关知识点,包括了数据库结构、SQL语言使用、安全性、性能优化等方面。下面将对题目中的知识点进行详细解释。 ### 1. SGA内存区域 - **题目**: 以下(a)内存...

    Oracle数据库基础题库【含答案】.pdf

    14. **约束禁用**:禁用约束并不意味着可以在操作期间保证一切正常,禁用约束可能导致数据一致性问题。 15. **NULL值字段**:将可能包含NULL值的字段放在字段列表末尾可以节省存储空间,因为Oracle会为非NULL值的列...

    Oracle数据库补考试题.docx

    根据提供的文档信息,我们可以归纳并深入解析Oracle数据库的相关知识点,主要围绕选择题、名词解释、简答题及应用题几个部分展开。以下是对这些知识点的详细阐述: ### 一、选择题解析 1. **实例服务**:选项D ...

    ORACLE数据库对象与用户管理

    ### ORACLE数据库对象与用户管理 ...以上是关于Oracle数据库中模式对象的管理和维护的一些基础知识。每一种模式对象都有其独特的用途和管理方法,掌握这些内容对于有效管理Oracle数据库至关重要。

    oracle数据库期末考试题及答案.docx

    根据提供的文档内容,这里主要涉及Oracle数据库的相关知识点,包括了选择题的形式来考察对Oracle数据库的理解与应用。接下来,我们将详细解析题目中的知识点。 ### A1、以下( )存区不属于SGA。 - **SGA(System ...

    ORACLE 常用数据库

    Oracle数据库是世界上最流行的关系型数据库管理系统之一,广泛应用于企业级数据存储和管理。本文将详细介绍Oracle数据库的一些常用SQL语句、基本操作以及关键概念。 首先,我们来看几个用于查询数据库对象的基本SQL...

    oracle index学习总结

    1. 空值处理:Oracle的NULL值在B-Tree索引中不被索引,因此含有NULL值的查询可能不会使用索引。 2. 索引维护:随着数据的增长,索引需要维护,如重建或重新组织,以保持其效率。 3. 索引空间:索引会占用额外的...

    oracle面试题集锦

    Oracle 数据库面试题集锦涵盖了Oracle数据库管理的关键概念和技术,以下是对这些面试题涉及知识点的详细解释: 1. **冷备份与热备份**: - **冷备份**是在数据库关闭状态下进行的,适用于所有模式的数据库,优点是...

    超级详细Oracle教程 java

    - **背景介绍**:本文档是一份关于Oracle数据库的详尽教程,旨在为学习者提供一个全面且深入的学习资源。文档涵盖了从基础概念到高级功能的一系列内容,适合各个层次的学习者。 - **历史背景**:介绍了2009年Oracle...

    如何为在线的含有千万条记录的表建立索引-ITPUB[归类].pdf

    在IT领域,尤其是在数据库管理中,为大型在线系统创建索引是提高查询性能的关键步骤。本文将详细讨论如何为一个...在Oracle数据库中,这些策略的实施可以帮助我们高效地为千万级别的表创建索引,提升系统的整体效能。

    mySQL培训手册

    - MySQL不支持直接禁用约束,但在进行大量数据操作前可考虑暂时禁用索引。 - **1.2.2.4.7 删除约束** - 使用`ALTER TABLE 表名 DROP INDEX 索引名;`或`ALTER TABLE 表名 DROP FOREIGN KEY 外键名;` - **1.2.2.5...

    oracle-认证之管理统计信息

    - **作用**:帮助优化器评估使用索引访问的成本。 ##### 4. 系统计统计 - **指标**:I/O性能与使用率、CPU性能与使用率。 - **存储位置**:I/O统计信息存储在`X$KCFIO`中,而其他系统统计信息则存储在`aux_stats$`...

    Oracle常用异常代码

    以上是关于Oracle数据库中常见的异常代码及其含义和解决方法的详细介绍。在开发过程中,了解这些异常对于提高程序的健壮性和可维护性非常重要。希望本文能帮助开发者更好地理解和处理Oracle中的异常情况。

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    说明:Oracle中需要创建用户一定是要具有dba(数据库管理员)权限的用户才能创建,而且创建的新用户不具备任何权限,连登录都不可以。 用法:create user 新用户名 identified by 密码 例子: 2. 修改密码 说明:...

    Oracle学习笔记.doc

    ### Oracle学习笔记知识点详解 #### 一、SQL概述与Oracle...以上是关于Oracle学习笔记中的主要知识点详细介绍,涵盖了SQL的基础概念、基本操作、高级查询技巧等多个方面,帮助读者全面掌握Oracle数据库的使用方法。

    Oracle 错误集选

    Oracle数据库是企业级数据管理解决方案的重要组成部分,但在使用过程中,用户可能会遇到各种各样的错误。了解这些错误及其解决方法,对于提高数据库系统的稳定性和性能至关重要。以下是从标题、描述及部分内容中提炼...

Global site tag (gtag.js) - Google Analytics