美文网首页
数据库索引

数据库索引

作者: mocobk | 来源:发表于2020-09-24 10:18 被阅读0次

重点:

  • 了解索引的概念,类型
  • 掌握创建索引的方法
  • 掌握如何修改,删除索引

索引

  • 概念:索引是一个单独的,物理的数据库结果
  • 是某个表一个列或者若干列的集合和相应指向表中物理标识这些值得数据页的逻辑指针清单
  • 依赖与表
  • 表的储存分为两部分
    • 存储表的数据页
    • 存储表的索引页,索引
  • 存储表的数据页
  • 存储表的索引页,索引
  • 数据查询,系统会先查询索引页,从中找到指向所查数据的索引,然后通过索引查询数据
  • 索引有数据库自动管理和维护
  • 索引只是提供了一种快速访问指定数据的方法

索引的类型

  • 根据类型分
    • 聚集索引
    • 非聚集索引
  • 根据作用分
    • 唯一索引:唯一索引不允许两行具有相同的索引值
    • 索引视图
    • 全文索引
    • XML索引
    • 主键索引:特殊的唯一索引

聚集索引和非聚集索引

  • 正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”
  • 这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”

其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音 排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那 么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”。也就是说,字典的正文部分 本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。
  如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的 字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合“部首目录”和“检字表”而查到的字的排序 并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却 是63页,“张”的下面是“弩”字,页面是390页。很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上 就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结 果,然后再翻到您所需要的页码。我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。

image

确定索引列

  • 索引能提高查询速度,但过多的索引也可能让数据查询更慢
  • 索引的不利因素
    • 创建和维护索引需要时间
    • 索引需要占据物理空间
    • 当表中数据进行更新操作时,索引也需要动态的维护,降低数据的维护速度

image

创建索引

  • 管理器创建索引 数据库-表-索引-右击-新建索引-确定索引类型-选择索引列-确定
  • SQL语句创建索引

create index语句创建索引

1 create [索引类型] index index_name on table_or_view_name (column_name)

查看索引属性
右击索引名称--属性

修改索引

  • 使用管理器修改
  • 使用SQL语句修改

image

删除索引

image

MYSQL 索引
MySQL聚集索引和非聚集索引

InnoDB按照主键进行聚集bai,如果没du有定义主键,InnoDB会试着使用唯一值的非空索引来代替。如果没有这种索引,InnoDB就会定义隐藏的主键然后在上面进行聚集。
所以,对于 聚集索引 来说,你创建主键的时候,自动就创建了主键的聚集索引。
而普通索引(非聚集索引)的语法,大多数数据库都是通用的:

CREATE INDEX Syntax
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[index_type]
ON tbl_name (index_col_name,...)
[index_type]
index_col_name:
col_name [(length)] [ASC | DESC]
index_type:
USING {BTREE | HASH | RTREE}
[java] view plaincopy
-- 创建无索引的表格
create table testNoPK (
id int not null,
name varchar(10)
);
-- 创建普通索引
create index IDX_testNoPK_Name on testNoPK (name);

讲述索引的博客

http://www.cnblogs.com/terryglp/articles/2450197.html

相关文章

  • 数据库索引记录

    本文用来记录数据库索引相关内容; 1】数据库索引分为单列索引,组合索引,全文索引,空间索引 2】单列索引:只有一个...

  • 索引,序列,视图

    1、数据库索引索引是数据库对象之一,用于加快数据的检索,类似于书籍的索引。在数据库中索引可以减少数据库程序查询结果...

  • Sql索引优化—转载

    数据库索引使用方式 使用索引是提高数据库查询效率的主要方式,下面从索引结构,索引类型,索引操作,命中索引几个方面来...

  • 数据库 - 索引

    索引 索引 索引的建立对于数据库的高效运行是很重要的。索引可以大大提高数据库的检索速度。 索引分单列索引,组合索引...

  • [Mysql]Mysql索引实现原理及相关优化策略

    数据库索引 数据库索引是什么? A database index is a data structure that...

  • 数据库索引定义和类型

    数据库索引类型及实现方式 1、索引定义 数据库索引好比是一本书前面的目录,能加快数据库的查询速度。索引是对数据库表...

  • 数据库索引结构总结

    [TOC] 参考 数据库索引数据结构总结 本文摘抄自数据库索引数据结构总结 1. 摘要 数据库索引是数据库中最重要...

  • MySQL 索引

    MySQL 索引 数据库索引的原理:数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表...

  • 『数据库』索引的工作原理

    数据库索引能够提高数据库的查询效率,那么索引到底是什么。 什么是索引 索引本身这个名字已经能回答这个问题了,索引就...

  • PostgreSQL基础知识--索引

    索引是增强数据库性能的常用方法。索引使得数据库在查找和检索数据库的特定行的时候比没有索引快得多。但索引页增加了整个...

网友评论

      本文标题:数据库索引

      本文链接:https://www.haomeiwen.com/subject/exrzyktx.html