`

oracle普通索引介绍(单字段索引)

阅读更多

 

oracle复合索引介绍(多字段索引) : http://ysj5125094.iteye.com/blog/1745367

 

 

(1).门牌号码:ROWID

        欲介绍索引,先介绍一个概念:ROWID.在数据库中,每条记录都有自己的物理地址,叫做ROWID,包括所属的数据文件号,数据块号,以及在该数据块中的具体位置信息等.ROWID就相当于一个门牌号码,也相当于一本书的页码.

(2).索引就是目录:

        索引就是一本书的目录.索引包括被索引的字段值和所对应的ROWID,分别相当于目录中的书条目和对应的页码.

 

20/80规则: 80%的性能问题可以由20%的优化技术所解决.

 

 

错误的SQL语句会导致索引的不执行.如下:

to_char(DJ_SZ.JDRQ,'yyyy-mm-dd') between '2012-04-01' and '2012-04-17' 
-- 即便在DJ_SZ.JDRQ字段建立了索引,该索引仍然无法启动,依然是全表扫描.因为索引树中记录的是DJ_SZ.JDRQ字段值,而不是to_char(DJ_SZ.JDRQ,'yyyy-mm-dd')数值.因此DJ_SZ.JDRQ索引无法使用.上述语句片段应该修改成:
DJ_SZ.JDRQ between to_date('2012-04-01','yyyy-mm-dd') and to_date('2012-04-17','yyyy-mm-dd')

 

开发规范之一 : 不要轻易在字段前增加函数.

-- oracle其实挺笨的,如果这样写:
DJ_NSRZT_BG.YXQ_Z + 7 < sysdate
-- oracle 也不会启动YXQ_Z字段上的索引,必须修改成这样:
DJ_NSRZT_BG.YXQ_Z < sysdate - 7 -- 原因同上

 

开发规范之二 : 尽量不要将字段嵌入表达式之中.

 

 

针对前面问题,为什么不可以直接使用oracle函数索引呢?例如:

create index idx_1 on DZ_SJ(to_char(JDRQ,'yyyy-mm-dd'));

的确,只要数据库运行在基于成本的优化器(CBO)模式下,并且将参数query_rewrite_enabled设置为true,就可以启动函数索引.而且不需要进行复杂的语句转换,提高语句的可读性.但本人建议,尽量少使用函数索引,而将函数进行转换.原因如下:

(1).函数索引是需要维护的.当数据库每次进行该表的DML操作时,oracle都需要维护函数索引,也就是说需要进行一次计算,维护成本将高于普通索引.

(2).函数索引的计算值可能大于原字段值,将消耗更多的索引存储空间.

 

 

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    oracle数据字典各字段解析.pdf

    文档标题“Oracle数据字典各字段解析.pdf”表明该文档专注于解析 Oracle 数据库中数据字典的各个字段。数据字典是 Oracle 数据库中存储数据库结构信息的特殊表,它记录了数据库中所有对象的定义和相关信息。Oracle ...

    18.Oracle索引1

    - 普通索引:最基本的索引类型,允许索引字段中有重复的值。 - 唯一索引:索引的每一项都是唯一的,可确保列中的数据唯一性,提高查询效率。 - 反向键索引:存储数据的顺序与实际相反,适用于频繁范围查询和排序...

    Oracle自带全文索引

    创建全文索引与创建普通索引类似,但需指定`indextype is ctxsys.context`和参数,如`lexer`定义词法分析器,`sync(on commit)`确保每次提交时自动同步索引。如果需要对多个字段创建多字段全文索引,可以通过设置...

    oracle普通表转化为分区表的方法

    本文将详细介绍如何通过在线重定义(DBMS_REDEFINITION)将普通表转换为分区表,这是官方给出的四种方法之一,且对系统的影响最小。 在线重定义是一种在不影响用户访问的情况下,改变表结构的方法。以下是将普通表...

    oracle中blob 字段类型的应用

    在开发涉及Blob字段的Oracle应用程序时,应合理设计数据库架构,考虑使用索引和分区策略以提高查询效率。同时,注意备份和恢复策略,因为Blob数据的恢复可能比普通数据更复杂。此外,理解并有效利用DBMS_LOB包的功能...

    Oracle实验二-SQL语句综合应用

    - 实验者提到了普通用户可能需要管理员权限才能执行某些操作,如创建视图和索引,这反映了Oracle中的权限管理系统。 8. **SQL操作技巧**: - 使用`NOT IN`、`NOT EXISTS`等条件判断时,需注意它们在特定情况下的...

    spring+hibernate操作oracle的clob字段

    在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB字段常被用来存储超过4000字节的信息。Spring和Hibernate框架结合使用可以有效地进行CLOB字段的操作。以下是实现这一功能的关键步骤和...

    Solr数据库插入(全量和增量)索引

    在配置文件中,我们需要定义索引字段,例如 ID、名称、描述等字段。我们还需要定义数据源,例如 Oracle 数据库的连接信息。最后,我们需要定义索引更新策略,例如全量索引或增量索引。 测试结果 在本文中,我们...

    Oracle课程设计(仓库管理系统)

    索引和视图是 Oracle 数据库管理系统的重要组成部分。在本系统中,我们将创建多个索引和视图,以提高数据库的查询效率。 索引包括单列索引和组合索引两种。在本系统中,我们将创建多个索引,以提高数据库的查询效率...

    Oracle数据库中建立索引的基本方法讲解

    首先,我们来看如何明确地创建普通索引。基本语法如下: ```sql CREATE INDEX index_name ON table_name (field_name) TABLESPACE tablespace_name PCTFREE 5 INITRANS 2 MAXTRANS 255 STORAGE (MINEXTENTS ...

    mysql数据库以及索引详解.pptx

    - **普通索引**:用表中的任意列构建的索引,无特殊限制。 - **全文索引**:适用于搜索大文本对象的索引。 - **组合索引**:基于多个列构建的索引,所有列值均不能为空。 ##### B-Tree索引 - **定义**:B-Tree是一...

    oracle性能优化技巧

    - 与普通的子查询相比,使用`EXISTS`可以减少查询的复杂度和提高性能。 14. **使用EXISTS代替DISTINCT**: - 当需要查询某一列的唯一值时,使用`EXISTS`通常比使用`DISTINCT`更高效。 综上所述,Oracle性能优化...

    省市县行政区域数据字典(mysql+oracle)

    此外,为了方便查询和使用,我们还应考虑建立合适的索引,比如针对常用查询字段(如省份或城市名称)创建全文索引或普通索引。同时,定期更新数据,以适应行政区划的变化。 总的来说,“省市县行政区域数据字典”是...

    oracle数据库教程

    此外,还可以创建索引以提高查询性能,索引可以是普通索引也可以是唯一性索引(UNIQUE),其中唯一索引保证了索引列的值不重复。 Oracle数据库教程提供了关于SQL语言的实用知识,帮助读者理解如何使用SQL语言来操作...

    Oracle数据库基础练习

    - **临时表空间**: 用于临时操作,如排序和索引构建。 - **撤销表空间**: 用于存储撤消数据,支持事务的回滚。 #### 十八、表空间与数据文件的关系 - **解析**: 一个表空间可以由一个或多个数据文件组成,但每个...

    利用GDAL2.1.2库 把shp文件导入 oracle数据库中 例子

    3. **创建表结构**:根据Shapefile的字段信息,在Oracle数据库中创建相应的表结构。这可能需要使用SQL语句,创建空间类型列,如MDSYS.SDO_GEOMETRY,以存储地理特征。 4. **分批次导入数据**:遍历Shapefile的数据...

    Oracle中如何对超大规模数据(如超过2亿条)直接用SQL语句入库?

    在实际生产环境下,有时需将超大规模数据(如超过2亿条)导入分区表,但因原表与目的分区表的字段不一致,且用Kettle等转换工具极易失败,而用insert into select t1,t2.. from tab的Oracle SQL方式直接执行将导致...

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

    ORACLE用户是学习ORACLE数据库中的基础知识,下面就介绍下类系统常用的默认ORACLE用户: 1. sys用户:超级用户,完全是个SYSDBA(管理数据库的人)。拥有dba,sysdba,sysoper等角色或权限。是oracle权限最高的用户,...

    oracle数据开发规范

    - **普通索引**: `idx_表名_字段名`,例如 `idx_sales_orders_order_date`。 - **主键索引**: `pk_idx_表名_字段名`,例如 `pk_idx_sales_orders_order_id`。 **5. 字段命名规范** - 字段命名应具有描述性,避免...

    oracle教材,全面学习分区

    - 对于索引组织表(Index Organized Table, IOT),只能支持普通分区,不支持复合分区,并且分区依赖列必须是主键。 - 全局索引和本地索引的选择很重要,全局索引提供了更多的灵活性但可能需要额外的维护工作;本地...

Global site tag (gtag.js) - Google Analytics