广告
返回顶部
首页 > 资讯 > 数据库 >SQL索引
  • 382
分享到

SQL索引

SQL索引 2016-08-19 07:08:47 382人浏览 猪猪侠
摘要

sql索引 遥远的将不再遥远,平凡的已不再平凡。 索引 index 索引是一种排好序的快速查找的数据结构,它帮助数据库高效的进行数据的检索。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(额外的存储空间),这些数据结构以某种

SQL索引

sql索引

遥远的将不再遥远,平凡的已不再平凡。

索引 index

索引是一种排好序的快速查找的数据结构,它帮助数据库高效的进行数据的检索。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(额外的存储空间),这些数据结构以某种方式指向数据,这样就可以在这些数据结构上实现高效的查找算法。这种数据结构就叫做索引。

一般来说索引本身也很大,不可能全部存储在内存中,因此往往以索引文件的形式存放在磁盘中。目前大多数索引都采用BTree树方式构建。

分类

单值索引:一个索引只包括一个列,一个表可以有多个列
唯一索引:索引列的值必须唯一,但允许有空值;主键会自动创建唯一索引
复合索引:一个索引同时包括多列

创建索引

  • 查看索引,主键会自动创建索引
show index from user;
  • 创建索引
create index 索引名字 on 表名(字段名); #创建索引
create index score_index on scores(score); #创建索引
  • 修改表结构,添加普通索引
alter table user add index sex_index(sex)
  • 创建唯一索引
alter table students add unique(id) #创建唯一索引,索引列的值必须唯一
  • 创建复合索引
alter table user add index cp_index(name,age);
  • 创建复合唯一索引
alter table user add unique cp_index(name,age);
  • 删除索引
alter table uesr drop index cp_index;

索引扫描类型

type:

  • ALL 全表扫描,没有优化,最慢的方式
  • index 索引全扫描,其次慢的方式
  • range 索引范围扫描,常用语<,<=,>=,between等操作
  • ref 使用非唯一索引扫描或唯一索引前缀扫描,返回单条记录,常出现在关联查询中
  • eq_ref 类似ref,区别在于使用的是唯一索引,使用主键的关联查询
  • const/system 单条记录,系统会把匹配行中的其他列作为常数处理,如主键或唯一索引查询,system是const的特殊情况
  • null Mysql不访问任何表或索引,直接返回结果

使用索引 explain

explain

select * from user where id = 1;#使用了id的索引

最左特性

当我们创建一个联合索引(复合索引)的时候,如(k1,k2,k3),相当于创建了(k1)、(k1,k2)和(k1,k2,k3)三个索引,这就是最左匹配原则,也称为最左特性。

注意:查询k2字段或者k3字段或者k2和k3字段,索引就会失效

ALTER TABLE user ADD INDEX user_index(id,name,age); #这里添加复合索引

explain

select * from user where id = 1 and name = "阿柒"; #索引生效

select * from user where name = "阿柒"; #索引失效

select * from user where id = 1 and age = 21; #索引失效

索引查询

明显查询索引表比直接查询数据表要快的多,首先,索引表是排序了,可以类似二分查找,非常有效的提高了查询的速度。

其过程如下图,先到事先排序好的索引表中检索查询,找到其主键后,就直接定位到记录所在位置,然后直接返回这条数据。

  • 排序,tree结构,类似二分查找
  • 索引表小

优点:

  • 索引是数据库优化
  • 表的主键会默认自动创建索引
  • 每个字段都可以被索引
  • 大量降低数据库的io磁盘读写成本,极大提高了检索速度
  • 索引事先对数据进行了排序,大大提高了查询效率

缺点:

  • 索引本身也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也要占用空间
  • 索引表中的内容,在业务表中都有,数据是重复的,空间是“浪费的”
  • 虽然索引大大提高了查询的速度,但对数据的增、删、改的操作需要更新索引表信息,如果数据量非常巨大,更新效率就很慢,因为更新表时,mysql不仅要保存数据,也要保存一下索引文件
  • 随着业务的不断变化,之前建立的索引可能不能满足查询需求,需要消耗我们的时间去更新索引
您可能感兴趣的文档:

--结束END--

本文标题: SQL索引

本文链接: https://www.lsjlt.com/news/8687.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL索引(索引优化)
    #1.最左前缀匹配原则,非常重要的原则, create index ix_name_email on s1(name,email,) - 最左前缀匹配:必须按照从左到右的顺序匹配 select * from s1 wher ...
    99+
    2021-11-01
    SQL索引(索引优化)
  • SQL索引
    SQL索引 遥远的将不再遥远,平凡的已不再平凡。 索引 index 索引是一种排好序的快速查找的数据结构,它帮助数据库高效的进行数据的检索。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(额外的存储空间),这些数据结构以某种...
    99+
    2016-08-19
    SQL索引
  • SQL-索引
    理解“聚集索引”和“非聚集索引” ① 聚集索引(clustered   index,也称聚类索引、簇集索引):把内容本身就是一种按照一定规则排列的目录称为“聚集索引”        我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查...
    99+
    2018-10-08
    SQL-索引
  • 【SQL SERVER】索引
    在做开发过程中经常会接触数据库索引,不只是DBA才需要知道索引知识,了解索引可以让我们写出更高质量代码。简单介绍索引的概述,聚集索引,非聚集索引,唯一索引,复合索引,筛选索引使用及注意事项 在做开发过...
    99+
    2019-05-21
    【SQL SERVER】索引
  • SQL之索引
    创建一张表:    QString querystr;     querystr="create tabl...
    99+
    2022-10-18
    sql
  • sql 索引问题-where字段索引
    假如有一个表TableTest,已为CREATE_TIME字段设置索引,取值如'2017-11-12 21:52:49'。那么(1)sql写法:DATE_FORMAT(CREATE_TIME,'%Y-%m-...
    99+
    2022-10-18
    sql 索引 he
  • SQL之SQL索引怎么建立
    SQL索引是用于提高查询效率的一种数据结构。通过建立索引,可以让数据库快速定位到存储在表中的数据。下面是建立SQL索引的一些常见方法...
    99+
    2023-09-14
    SQL
  • SQL Server索引维护的sql语句
    这篇文章主要介绍“SQL Server索引维护的sql语句”,在日常操作中,相信很多人在SQL Server索引维护的sql语句问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-10-18
    sql server
  • sql索引优化思路
    【开发】SQL优化思路(以oracle为例) powered by wanglifeng https://www.cnblogs.com/wanglifeng717 单表查询的优化思路 单表查询是最简单也是最重要的模块,它是多表等查询的...
    99+
    2020-02-17
    sql索引优化思路
  • SQL中索引怎么用
    小编给大家分享一下SQL中索引怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 1、概念&nb...
    99+
    2022-10-19
    sql
  • SQL Server 全文搜索/全文索引
    全文引擎使用全文索引中的信息来编译可快速搜索表中的特定词或词组的全文查询。全文索引将有关重要的词及其位置的信息存储在数据库表的一列或多列中。全文索引是一种特殊类型的基于标记的功能性索引,它是由 SQL Server 全文引...
    99+
    2014-12-30
    SQL Server 全文搜索/全文索引
  • 【SQL应知应会】索引(三)• MySQL版:聚簇索引与非聚簇索引;查看索引与删除索引;索引方法
    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 索引 • MySQL...
    99+
    2023-08-24
    sql mysql 数据库 oracle 大数据 面试
  • SQL Server 2014的重建索引
    对于表的index来说,如果这个表的index size非常大的话,建议对这个表的index单独重建索引。 对全表做重建索引: alter index all on Table rebuild w...
    99+
    2022-10-18
    2014 sql server
  • SQL索引的优化方法
    这篇文章主要讲解了“SQL索引的优化方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL索引的优化方法”吧!SELECT TOP 50ROW_N...
    99+
    2022-10-18
    sql
  • 怎么用SQL建立索引
    这篇文章主要讲解了“怎么用SQL建立索引”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用SQL建立索引”吧!用SQL建立索引为了给一个表建立索引,启动任...
    99+
    2022-10-18
    sql
  • SQL Server索引有什么用
    这篇文章给大家分享的是有关SQL Server索引有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。索引的概念索引的用途:我们对数据查询及处理速度已成为衡量应用系统成败的标准...
    99+
    2022-10-18
    sql sql server
  • mysql添加索引的方法(Navicat可视化加索引和sql语句加索引)
    使用索引的场景: 阿里云日志里出现了慢sql  然后发现publish_works_id字段会经常用于一些关联,所以决定把这个字段加上索引,优化sql 可视化navicat操作字段加索引,选择字段所在的表,第一步:右键->设计表 第二步:...
    99+
    2023-09-22
    mysql 数据库 sql
  • sql中怎么实现聚集索引和非聚集索引
    这期内容当中小编将会给大家带来有关sql中怎么实现聚集索引和非聚集索引,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。聚集索引   一种索引,该索引中键值的逻辑顺序决定了表...
    99+
    2022-10-18
    sql
  • mysql添加索引方法详解(Navicat可视化加索引与sql语句加索引)
    目录使用索引的场景:下面是通过sql语句添加索引的方法:1、普通索引1)、直接创建索引2)、修改表结构的方式添加索引3)、删除索引2、唯一索引1)、创建唯一索引2)、修改表结构3、主键索引4、组合索引5、全文索引1)、创...
    99+
    2022-11-15
    mysql添加索引sql语句 mysql添加索引命令 sql创建索引
  • Oracle 建立索引及SQL优化
    数据库索引: 索引有单列索引复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。 建设原则:  1、索引应该经常建在Where ...
    99+
    2015-01-04
    Oracle 建立索引及SQL优化
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作