索引介绍

索引是对数据库表中一列或多列的值进行排序的一种结构,换句话说用于定位相同字段的一种标识符,其就相当于图书的目录。

当sql语句在执行查询操作的时候,有两种搜索方式。第一种搜索信息方式是全表搜索,第二种根据索引,找到符合查询条件的索引值,再通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。

建立索引的优点

  • 1.大大加快数据的检索速度;
  • 2.创建唯一性索引,保证数据库表中每一行数据的唯一性;
  • 3.加速表和表之间的连接;
  • 4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

索引的缺点

  • 1.索引需要占物理空间。
  • 2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。

索引的设计原则:

  • 提高查询语句的效率,减慢了DML语句的速度。
  • 在全表扫描和索引之间权衡。
  • 能够使用组合索引的则尽量使用组合索引。
  • 对于大表,尽量利用local的分区索引。

索引使用的一些具体规则:

  • 在哪些列上建立索引:
    1. Where字局中引用的列
    2. Join中利用的列
    3. 在子表的FK上建立索引(防止对父表操作时锁住子表)
  • 在哪些列上不要建立索引:
    1. 经常有DML操作
    2. 排它性小
    3. 不建议表上索引超过5个
  • 索引不起作用的情况:
    1. 存在数据类型隐形转换
    2. 列上有数学运算
    3. 使用不等于(< >)运算
    4. 使用substr字符串函数
    5. %通配符在第一个字符
    6. 字符串连接(||)
  • 删除不使用的索引
  • 定期重建大量删除操作的索引

(备注知识)

对于SQL语言,有两个组成部分:
DML(data manipulation language):它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。

DDL(data definition language):DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。

时间: 2024-10-07 11:00:31

索引介绍的相关文章

数据库索引介绍及使用【转】

数据库索引介绍及使用 一.索引的概念 索引就是加快检索表中数据的方法.数据库的索引类似于书籍的索引.在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息.在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库. 二.索引的特点 1.索引可以加快数据库的检索速度 2.索引降低了数据库插入.修改.删除等维护任务的速度 3.索引创建在表上,不能创建在视图上 4.索引既可以直接创建,也可以间接创建 5.可以在优化隐藏中,使用索引 6.使用查询处理器执行SQL语句,在一个表

复合索引介绍

什么是复合索引 1.1           复合索引定义 索引可以包含一个.两个或更多个列.两个或更多个列上的索引被称作复合索引. 利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引不同于使用两个单独的索引.复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序.如果您知道姓,电话簿将非常有用:如果您知道姓和名,电话簿则更为有用,但如果您只知道名不姓,电话簿将没有用处. 所以说创建复合索引时,应该仔细考虑列的顺序.对索引中的所

SQL Server和Oracle数据库索引介绍

SQL Server和Oracle数据库索引介绍 1 SQL Server中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度.索引包含由表或视图中的一列或多列生成的键.这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行. 表或视图可以包含以下类型的索引: 聚集索引 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行.索引定义中包含聚集索引列.每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序. 只有当表包含聚集索引

搜索引擎算法研究专题三:聚集索引与非聚集索引介绍

搜索引擎算法研究专题三:聚集索引与非聚集索引介绍 聚集索引介绍 在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同.表只能包含一个聚集索引. 如果不是聚集索引,表中各行的物理顺序与键值的逻辑顺序不匹配.聚集索引比非聚集索引有更快的数据访问速度. 聚集索引通常可加快 UPDATE 和 DELETE 操作的速度,因为这两个操作需要读取大量的数据.创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组. 可考虑将聚集索引用于: 1.包含数量有限的唯一值的列,如 s

关系型数据库(一),索引介绍

目录 1.为什么要使用索引 2.什么样的信息能够成为索引 3.索引的数据结构 一.索引介绍 1.为什么要使用索引 普通搜索:会遍历全部的数据,然后找出匹配的数据,如果数据太多则非常慢 索引搜索:只会搜索对应索引内容,非常快 2.什么样的信息能够成为索引 能把数据限制在某些段的信息,比如:主键.唯一键以及普通键等 3.索引的数据结构 使用二叉查找树进行二分查找 建立B-Tree进行查找 建立B+-Tree进行查找 建立Hash结构进行查找 原文地址:https://www.cnblogs.com/

IntelliJ IDEA 缓存和索引介绍和清理方法

IntelliJ IDEA 首次加载项目的时候,都会创建索引,而创建索引的时间跟项目的文件多少成正比,我也简单强调了 IntelliJ IDEA 索引的重要性.这里我们再对此进行详细说明索引.缓存对 IntelliJ IDEA 的重要性. 通过<常见文件类型的图标介绍>章节,你已经认识到 IntelliJ IDEA 下各个文件类型的图标是什么样子的.其中有一个图标我是专门进行了讲解: Java class located out of the source root.我们也都知道该图标是表示

位置索引介绍

在本系列的前面一篇文章中, 我们介绍了中文分词. 因为"中文"这门语言主要是"词语"表达的语言, 一个句子中间没有空格停顿, 所以我们在分析处理一段话, 或者一篇文章时, 总是把每一个句中根据最合适的语境拆分成一系列的短语, 其实这个过程就是我们所说的中文分词. 但是在有些语言中我们并不能总是把一句话很好的分拆成一个个的词组, 比如中文"中国梦是我们每个人的梦"可以分成这些词组: 中国梦, 我们, 每个(每个人). 但是如果这样一句英语: not

[Spring cloud 一步步实现广告系统] 12. 广告索引介绍

索引设计介绍 在我们广告系统中,为了我们能更快的拿到我们想要的广告数据,我们需要对广告数据添加类似于数据库index一样的索引结构,分两大类:正向索引和倒排索引. 正向索引 通过唯一键/主键生成与对象的映射关系. 比如,我们从数据库中查询数据的时候,根据数据主键ID查询当前记录,其实就是一个正向索引的过程. 根据这个描述,很明显,我们的正向索引适用于推广计划,推广单元 和 创意这几张表的数据上,因为广告检索的请求信息,不可能是请求具体的计划或推广单元,它的检索请求一定是限制条件. 倒排索引 也叫

索引介绍、原理与分类

介绍 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重. 而要提高查询效率,创建索引就是其中一个非常重要的手段. 那什么是索引呢? MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.数据库除了数据本身之外,还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据

mysql索引介绍

在数据表中对字段建立索引将大大提高查询的速度: 例如:select * from mytable where username='admin' 如果在列username上建立了索引,只需要一次就可以找到该记录 一.mysql索引的类型: 1.普通索引 创建:create index indexname on mytable(username) 删除:drop index [indexname] on mytable 2.唯一索引 特点:索引列值必须唯一,但允许有null值 创建:create u