我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQL索引

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQL索引

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不仅要保存数据,也要保存一下索引文件
  • 随着业务的不断变化,之前建立的索引可能不能满足查询需求,需要消耗我们的时间去更新索引

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQL索引

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

下载Word文档

猜你喜欢

SQL索引(索引优化)

#1.最左前缀匹配原则,非常重要的原则, create index ix_name_email on s1(name,email,) - 最左前缀匹配:必须按照从左到右的顺序匹配 select * from s1 where name="egon"; #可以
SQL索引(索引优化)
2021-11-01

SQL索引

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

SQL-索引

理解“聚集索引”和“非聚集索引”① 聚集索引(clustered   index,也称聚类索引、簇集索引):把内容本身就是一种按照一定规则排列的目录称为“聚集索引”       我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开
SQL-索引
2018-10-08
2024-04-02

【SQL SERVER】索引

在做开发过程中经常会接触数据库索引,不只是DBA才需要知道索引知识,了解索引可以让我们写出更高质量代码。简单介绍索引的概述,聚集索引,非聚集索引,唯一索引,复合索引,筛选索引使用及注意事项 在做开发过程中经常会接触数据库索引,不只是DBA才需要知
【SQL SERVER】索引
2019-05-21

SQL之SQL索引怎么建立

SQL索引是用于提高查询效率的一种数据结构。通过建立索引,可以让数据库快速定位到存储在表中的数据。下面是建立SQL索引的一些常见方法:1. 唯一索引:唯一索引可以确保索引列的值是唯一的,可以在创建表时或者后期通过ALTER TABLE语句添
2023-09-14

【SQL应知应会】索引(三)• MySQL版:聚簇索引与非聚簇索引;查看索引与删除索引;索引方法

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 索引 • MySQL
2023-08-24

sql索引怎么使用

数据库索引是一种特殊的数据结构,通过快速查找来提高查询性能。它对表中的特定列进行排序,以便快速定位满足查询条件的数据。索引类型: 主键索引、唯一索引、普通索引、全文索引。使用时机: 经常出现在查询中、具有大量唯一值或不同值的列、参与联接或排
sql索引怎么使用
2024-05-30

sql怎么使用索引

索引是数据库中用于加快数据检索的特殊数据结构。创建索引时,使用 create index 语句在表中指定要索引的列。索引类型包括:b-tree 索引(范围查找)、哈希索引(唯一值查找)和全文索引(文本搜索)。选择索引列时,应考虑经常用于搜索
sql怎么使用索引
2024-05-30

sql索引怎么查询

在 mysql 中,使用 show index 语句可以查询表中的索引。步骤包括:连接到数据库。输入 show index from 语句,其中 是要查询的表的名称。输出结果集包含索引名称、列名称、索引类型、唯一性、基数、字段等信息。S
sql索引怎么查询
2024-06-03

SQL Server 全文搜索/全文索引

全文引擎使用全文索引中的信息来编译可快速搜索表中的特定词或词组的全文查询。全文索引将有关重要的词及其位置的信息存储在数据库表的一列或多列中。全文索引是一种特殊类型的基于标记的功能性索引,它是由 SQL Server 全文引擎生成和维护的。生成全文索引的过程不同
SQL Server 全文搜索/全文索引
2014-12-30

sql怎么查看索引

您可以使用 sql 通过以下方法查看索引:show indexes 语句:显示表中定义的索引列表及其信息。explain 语句:显示查询计划,其中包含用于执行查询的索引。information_schema 视图:提供有关索引、列和统计信息
sql怎么查看索引
2024-05-14

sql中索引的用法

sql 中索引是一种通过创建数据指针来提高查询性能的技术,主要用于where、order by、join和group by子句。索引类型包括聚集索引、非聚集索引、主键索引、唯一索引和覆盖索引。优点包括查询速度提升、服务器负载减少、i/o操作
sql中索引的用法
2024-05-15

sql索引怎么设置

sql 索引通过指向表中数据的指针加速数据检索,特别适用于需要根据特定列过滤或排序大数据集的情况。创建索引的语法为:create index [index_name] on [table_name] ([column_name])。有簇集索
sql索引怎么设置
2024-05-30

sql索引优化思路

【开发】SQL优化思路(以oracle为例)powered by wanglifeng https://www.cnblogs.com/wanglifeng717单表查询的优化思路单表查询是最简单也是最重要的模块,它是多表等查询的基础。避免对数据重复扫描能一次
sql索引优化思路
2020-02-17

sql中索引的使用

索引是一种加速查询的数据结构,允许数据库快速查找具有特定值的行,而无需扫描整个表。索引的类型包括 b-tree 索引(高效查找)和哈希索引(极快查找)。它们通过减少扫描量、加快查找速度和提高范围查询性能来提高查询性能。创建索引时,请识别频繁
sql中索引的使用
2024-05-15

sql怎么建立索引

通过确定需要索引的列、选择合适的索引类型并创建索引,可在 sql 中建立索引,从而优化查询性能,加快数据检索速度,降低查询时间和提高应用程序性能。需要注意的是,索引会消耗存储空间和维护时间,过度索引可能会降低查询性能。如何使用 SQL 建立
sql怎么建立索引
2024-06-03

编程热搜

目录