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

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

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);

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/project/

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, 索引
, 唯一
, 语句
, 字段
, 数据表
, 字段相同的值
, 修改表字段名
表索引
数据库索引、数据库索引原理、数据库索引设计与优化、数据库索引怎么使用、数据库索引的作用,以便于您获取更多的相关知识。

时间: 2024-09-23 15:28:00

提前认识软件开发(32) 数据库索引的相关文章

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

第2部分 数据库SQL语言 数据库索引           索引在数据库中占有非常重要的地位,它是对数据库表中一列或多列的值进行排序的一种结构.正确使用索引,可快速访问数据库表中的特定信息,进而提高数据库脚本的执行效率.   1. 索引分类         数据库表中经常有一列或几列的组合,其值唯一地标识表中的每一行,该列称为表的主键.         在数据库中,将索引分为三类:唯一索引.主键索引和聚集索引.         唯一索引是不允许其中任何两行具有相同索引值的索引,即索引列的值不允许

提前认识软件开发(27) 数据库表及索引的创建

数据表(或称表),是数据库最重要的组成部分之一.数据库只是一个框架,数据表才是其实质的内容.举个例子来说,数据库就像是一座空旷的房子,而数据表是里面的家具,没有家具的房子只是一个空壳而已.根据信息的分类情况,一个数据库中可能包含若干个不同用途的数据表. 表结构有简单.有复杂,这就对开发人员提出了要求.如何设计一个表的字段才是最好的?表的字段如何命名?如何定义表字段的类型?如何建立索引?等等. 1. 修改之前的建表脚本 在作者从事过的某项目中,有一个建表脚本(基于Sybase数据库)样例如下: -

提前认识软件开发(29) 数据库脚本文件的布局

"没有规矩,不成方圆",规范数据库脚本文件的代码布局具有以下重要意义: (1) 可表现出代码良好的逻辑结构,提高代码的准确性.连续性.可读性及可维护性. (2) 有利于提高产品的开发质量和效率,并降低开发成本. (3) 对于开发人员来说,养成良好的脚本编写习惯有助于提高个人的数据库脚本编程水平,进而提高脚本编程效率. 可见,统一的.良好的脚本代码布局和风格不仅仅是个人主观美学或形式上的问题,而且影响到产品的质量,并涉及到自身脚本编程能力的提高. 1. 脚本布局顺序概述 在实际的软件开发

提前认识软件开发(25) 数据库简介

数据库是个通用化的综合性的数据集合,它可以供各种用户共享且具有最小的冗余度和较高的数据与程序的独立性.目前,国际上主导的大型数据库管理系统有ORACLE.SQL SERVER.SYBASE.INFORMIX和INGRES等. 数据库中常用的编程语言是SQL语言,按其功能可分为四大部分: 开发(25) 数据库简介-tcga数据库简介"> (1) 数据定义语言(Data Definition Language,DDL),用于定义.撤销和修改数据模式. (2) 数据查询语言(Data Query

提前认识软件开发(26) 数据库脚本的注释

1. 概述 注释在程序语言的编写中占有非常重要的地位.优美的.得当的注释不仅有助于研发人员理解程序,还能够提高编程效率(进而提高办事效率). 但是,可能是由于工作比较忙的缘故,许多开发人员不重视注释的书写,这也导致了项目交接的时候,其他开发人员理解程序困难,甚至不知道程序到底要做什么事情.因此,良好注释的书写是对一个开发人员的基本要求,大家一定要重视. 对于脚本的注释,建议大家一律采用英文,这样可以体现出国际化.专业性与规范性. 2. 数据库脚本文件头部的注释 很多脚本文件都没有头部的注释,大家

提前认识软件开发(31) 数据库脚本中的begin与end

在数据库脚本中,begin与end是一对奇怪的单词.缺少它们,某些代码看起来会让人一头雾水:添加它们,代码的结构瞬间就清晰了. 确实,begin与end作为代码语句的开始和结束标志,可以让脚本程序的逻辑明确,易于阅读. begin与end主要用在以下地方: 1. if.else.else if.while等语句中 if.else.else if.while等语句要自占一行,执行语句不得紧跟其后,不论执行语句有多少都要加语句块标志begin-end. 脚本文件中的begin和end应独占一行并且位

提前认识软件开发(30) 数据库脚本中的空行与空格

在数据库脚本中,空行与空格起着"锦上添花"的作用.恰当地使用它们,可以提高代码的规范性及可阅读性,进而提升数据库的编程效率. 1. 空行 空行起着分隔脚本段落的作用,适当的空行可以使脚本的布局更加的清晰.空行的作用有以下几个: (1) 用于分隔两个数据表的创建脚本 示例: create table tb_example1 ( [表内容实现代码] ) go -- 空行 create table tb_example2 ( [表内容实现代码] ) go (2) 用于分割两个存储过程的创建脚

提前认识软件开发(28) 数据库存储过程中的重要表信息的保存

1. 存储过程中的重要表信息的保存 在很多存储过程中,会涉及到对表数据的更新.插入或删除等,为了防止修改之后的表数据出现问题,同时方便追踪问题,一般会为一些重要的表建立一个对应的debug表.这个debug表中的字段要包括原表的所有字段,同时要增加操作时间.操作码和操作描述等字段信息. 例如,在某项目中,包括了如下一个重要的表tb_XXX: create table tb_XXX ( AAA varchar(30) not null, -- AAA BBB varchar(30) not nul

提前认识软件开发(34) 数据库的维护

对于某些大型软件产品,一旦商用,必然会存储很多用户信息,这就对产品所使用的数据库(以下简称业务数据库)带来了压力.为了保证业务数据库的平稳运行,需要在日常工作中对数据库做一些基本的维护操作. 业务数据库的维护规则如下: 1. 对业务数据库必须进行定期全量备份 业务数据库的定期备份能在数据库被意外破坏时进行快速恢复,备份策略可以根据数据增量大小采用周计划或月计划. 假如备份数据库db_100,则Oracle.Sybase和SQL Server中的操作方法如下: (1) Oracle用户模式的备份