让你提前认识软件开发(32):数据库索引

简介: 第2部分 数据库SQL语言数据库索引         索引在数据库中占有非常重要的地位,它是对数据库表中一列或多列的值进行排序的一种结构。正确使用索引,可快速访问数据库表中的特定信息,进而提高数据库脚本的执行效率。

第2部分 数据库SQL语言

数据库索引

 

        索引在数据库中占有非常重要的地位,它是对数据库表中一列或多列的值进行排序的一种结构。正确使用索引,可快速访问数据库表中的特定信息,进而提高数据库脚本的执行效率。

 

1. 索引分类

        数据库表中经常有一列或几列的组合,其值唯一地标识表中的每一行,该列称为表的主键。

        在数据库中,将索引分为三类:唯一索引主键索引聚集索引

        唯一索引是不允许其中任何两行具有相同索引值的索引,即索引列的值不允许重复。

        主键索引是唯一索引的特定类型,该索引要求主键中的每个值都唯一。

        在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个数据库表只能包含一个聚集索引。

 

2. 索引创建示例

        假设有一个员工信息表,包含了工号、姓名和年龄字段,要在工号字段上建立唯一索引,在姓名字段上建立索引。如下所示(基于Oracle数据库实现)

create table tb_employeeinfo

(

    employeeno         varchar(20)       not null,       -- 员工工号

    employeename    varchar(20)      not null,        -- 员工姓名

    employeeage       int                              null       -- 员工年龄

);

create unique index idx1_tb_employeeinfo on tb_employeeinfo(employeeno);

create index idx2_tb_employeeinfo on tb_employeeinfo(employeename);

 

3. 建立索引的原则

        如果是以下情况,可考虑在数据列上建立索引:

        (1) 数据表中包含大量非重复值的列(可以在该列上建立唯一索引)

        (2) 经常作为查询语句(精确匹配查询或范围查询)的搜索关键字(select等语句的where子句中经常出现的数据表字段)

        (3) 作为该表与其他表关联的关键列。

 

4. 有关索引的一些注意事项

        数据表建立了索引之后,我们要学会灵活地运用。根据作者的实际项目经验,有关索引的注意事项如下:

        (1) 所有定义数据表索引的语句紧跟在定义表之后,以方便查阅和修改。

        (2) 如果因为某种原因重建了表,一定要重建相关的索引。

        (3) 如果改变了表的结构,一定要检查和该表相关的索引是否正确;如果修改了建立索引的数据表字段名,一定要同时更改索引建立语句处对应的字段名。

        (4) where子句中字段的顺序应和索引中字段顺序保持一致。

        (5) 索引值过大(如在一个char(40)的字段上建索引),会造成大量的I/O开销(甚至会超过表扫描的I/O开销)。因此,尽量使用整数索引。

        (6) 如果一个字段的值可能为空,则不要在该字段上建立索引。

        (7) 大表索引个数不超过5,复合索引最大字段数不超过5

        (8) 在数据库脚本中,尽量避免使用or条件,因为or不使用索引。

        (9) 应避免将索引建立在经常变动的字段上,在频繁增、删、改的字段上不建索引。

        (10) 详单表、日志表、操作记录表等(特别是历史备份表)的时间字段上面必须要加上索引,因为这类表经常会依赖于时间字段进行查询、统计、备份和迁移。

 

        在实际的软件项目中,恰当地使用索引,可使数据库语句的执行效率得到大幅度提升,从而节约了数据库的资源。

 

 

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

目录
相关文章
|
2月前
|
数据库 索引
深入探索数据库索引技术:回表与索引下推解析
【10月更文挑战第15天】在数据库查询优化的领域中,回表和索引下推是两个核心概念,它们对于提高查询性能至关重要。本文将详细解释这两个术语,并探讨它们在数据库操作中的作用和影响。
61 3
|
2月前
|
数据库 索引
深入理解数据库索引技术:回表与索引下推详解
【10月更文挑战第23天】 在数据库查询性能优化中,索引的使用是提升查询效率的关键。然而,并非所有的索引都能直接加速查询。本文将深入探讨两个重要的数据库索引技术:回表和索引下推,解释它们的概念、工作原理以及对性能的影响。
93 3
|
1月前
|
存储 缓存 数据库
数据库索引采用B+树不采用B树的原因?
B+树优化了数据存储和查询效率,数据仅存于叶子节点,便于区间查询和遍历,磁盘读写成本低,查询效率稳定,特别适合数据库索引及范围查询。
40 6
|
2月前
|
存储 缓存 数据库
数据库索引采用B+树不采用B树的原因
B+树相较于B树,在数据存储、磁盘读写、查询效率及范围查询方面更具优势。数据仅存于叶子节点,便于高效遍历和区间查询;内部节点不含数据,提高缓存命中率;查询路径固定,效率稳定;特别适合数据库索引使用。
33 1
|
2月前
|
数据库 索引
数据库索引
数据库索引 1、索引:建立在表一列或多列的辅助对象,目的是加快访问表的数据。 2、索引的优点: (1)、创建唯一性索引,可以确保数据的唯一性; (2)、大大加快数据检索速度; (3)、加速表与表之间的连接; (4)、在查询过程中,使用优化隐藏器,提高系统性能。 3、索引的缺点: (1)、创建和维护索引需要耗费时间,随数据量增加而增加; (2)、索引占用物理空间; (3)、对表的数据进行增删改时,索引需要动态维护,降低了数据的维护速度。
41 2
|
3月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
77 3
Mysql(4)—数据库索引
|
2月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
375 1
|
2月前
|
存储 关系型数据库 数据库
Postgres数据库BRIN索引介绍
BRIN索引是PostgreSQL提供的一种高效、轻量级的索引类型,特别适用于大规模、顺序数据的范围查询。通过存储数据块的摘要信息,BRIN索引在降低存储和维护成本的同时,提供了良好的查询性能。然而,其适用场景有限,不适合随机数据分布或频繁更新的场景。在选择索引类型时,需根据数据特性和查询需求进行权衡。希望本文对你理解和使用PostgreSQL的BRIN索引有所帮助。
71 0
|
2月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
153 0
|
3月前
|
关系型数据库 MySQL 数据库
深入浅出MySQL索引优化:提升数据库性能的关键
在这个数据驱动的时代,数据库性能的优劣直接关系到应用的响应速度和用户体验。MySQL作为广泛使用的数据库之一,其索引优化是提升查询性能的关键。本文将带你一探MySQL索引的内部机制,分析索引的类型及其适用场景,并通过实际案例演示如何诊断和优化索引,以实现数据库性能的飞跃。

热门文章

最新文章