博客
关于我
大型数据库技术复习 —— 索引
阅读量:505 次
发布时间:2019-03-07

本文共 1236 字,大约阅读时间需要 4 分钟。

数据库索引指南

什么是索引?

索引是数据库中的一种结构,它通过存储特定列的值与数据页的逻辑指针列表实现对数据库表中数据的高效定位。索引的主要作用是加快数据检索速度,提高数据库性能。

索引的作用

  • 唯一性:创建唯一索引可确保数据记录的唯一性。
  • 加速检索:显著缩短数据查询时间。
  • 表连接:加速表间连接和数据操作。
  • 排序与分组:减少查询中的排序和分组开销。
  • 查询优化:通过索引信息帮助数据库优化器选择最佳路径。

聚集索引

聚集索引是数据记录和索引信息混合存储的索引类型。其叶节点包含实际数据行。特点:

  • 单一排序:每个表仅有一个聚集索引。
  • 创建顺序:应先创建聚集索引。
  • 默认设置:聚集索引的 indid 为 1。
  • 物理存储:聚集索引的数据页与表数据页混合存储。

非聚集索引

非聚集索引的叶节点存储索引值和行定位器,适用于非唯一性列。特点:

  • 默认类型:未指定索引类型时,默认为非聚集索引。
  • 数量限制:每个表最多可创建 249 个非聚集索引。
  • 最佳实践:在值唯一性较高的列创建非聚集索引,用于支持联接和分组操作。

主键索引与非主键索引

  • 主键索引:主键自动创建聚集索引。
  • 非主键索引:用于非主键列,通常为非聚集索引。

唯一索引与非唯一索引

  • 唯一索引:索引列不允许重复值,适用于确保数据唯一性。
  • 非唯一索引:用于未受约束的列。

单列索引与复合索引

  • 单列索引:仅对单一列建立索引。
  • 复合索引:包含多个列的索引,提升查询效率。

创建索引

使用 T-SQL 创建索引命令:

CREATE [UNIQUE] [CLUSTERED| NONCLUSTERED] INDEX 索引名 ON 表或视图(列 [ASC|DESC] [, ...n] ) WITH (PAD_INDEX, FILLFACTOR, IGNORE_DUP_KEY, DROP_EXISTING, STATISTICS_NORECOMPUTE, SORT_IN_TEMPDB)

参数说明:

  • UNIQUE:创建唯一索引。
  • CLUSTERED| NONCLUSTERED:指定索引类型。
  • ASC|DESC:索引列排序方向。
  • PAD_INDEX:保持索引页开放。
  • FILLFACTOR:索引填充因子。
  • IGNORE_DUP_KEY:允许重复键值。
  • DROP_EXISTING:删除已有索引。
  • STATISTICS_NORECOMPUTE:禁用索引统计。
  • SORT_IN_TEMPDB:中间排序存储在 tempdb。

示例:

USE 教学管理GOCREATE UNIQUE INDEX IX_学号_开课号 ON 选课表(学号 DESC, 开课号 ASC)WITH (PAD_INDEX = ON, FILLFACTOR = 90, IGNORE_DUP_KEY = ON, DROP_EXISTING = ON)

删除索引

使用命令:

DROP INDEX 表名.索引名[, ...n]

通过以上方法,可以有效管理数据库索引,优化查询性能。

转载地址:http://synjz.baihongyu.com/

你可能感兴趣的文章
Oracle分析函数之LEAD和LAG
查看>>
Oracle分组取前n条记录
查看>>
Oracle分页sql
查看>>
Oracle创建database link(dblink)和同义词(synonym)
查看>>
oracle创建数据库的步骤
查看>>
Oracle创建用户、角色、授权、建表
查看>>
Oracle创建用户与授予表空间与权限
查看>>
oracle创建表(并且实现ID自增)
查看>>
oracle创建视图与生成唯一编号
查看>>
oracle删除重复数据保留第一条记录
查看>>
oracle判断空值的函数nvl2,【PL/SQL】 NVL,NVL2,COALESCE 三种空值判断函数
查看>>
Oracle发布VirtualBox 7.1稳定版!支持ARM、优化了UI、支持Wayland等
查看>>
oracle启动三步
查看>>
oracle启动关闭服务,启动关闭oracle服务.bat
查看>>
Oracle命令行创建数据库
查看>>
Oracle和SQL server的数据类型比较
查看>>
oracle和sybase的一些区别
查看>>
oracle在日本遇到的技术问题
查看>>
Oracle在线重定义
查看>>
oracle基础 管理索引
查看>>