首页 > 其他分享 >什么是索引

什么是索引

时间:2024-08-26 15:21:41浏览次数:5  
标签:name 什么 索引 user where age select

1、什么是MySQL索引?

  • 官方上面说索引是帮助MySQL高效获取数据数据结构,通俗点的说,数据库索引好比是一本书的目录,可以直接根据页码找到对应的内容,目的就是为了加快数据库的查询速度
  • 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
  • 一种能帮助mysql提高了查询效率的数据结构:索引数据结构

1.1、索引原理

索引的存储原理大致可以概括为一句话:以空间换时间

一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中的(可能存储在单独的索引文件中,也可能和数据一起存储在数据文件中)。

数据库在未添加索引进行查询的时候默认是进行全文搜索,也就是说有多少数据就进行多少次查询,然后找到相应的数据就把它们放到结果集中,直到全文扫描完毕

1.2、索引的分类

主键索引:primary key

  • 设定为主键后,数据库自动建立索引,InnoDB为聚簇索引,主键索引列值不能为空(Null)。

唯一索引:

  • 索引列的值必须唯一,但允许有空值(Null),但只允许有一个空值(Null)。

复合索引:

  • 一个索引可以包含多个列,多个列共同构成一个复合索引。

全文索引:

  • Full Text(MySQL5.7之前,只有MYISAM存储引擎引擎支持全文索引)。
  • 全文索引类型为FULLTEXT,在定义索引的列上支持值的全文查找允许在这些索引列中插入重复值和空值。全文索引可以在Char、VarChar 上创建。

空间索引:

  • MySQL在5.7之后的版本支持了空间索引,而且支持OpenGIS几何数据模型,MySQL在空间索引这方年遵循OpenGIS几何数据模型规则。

前缀索引:

  • 在文本类型为char、varchar、text类列上创建索引时,可以指定索引列的长度,但是数值类型不能指定。

创建索引的基本操作

创建主键索引:

#建表时,主键默认为索引
create table user(
    id varchar(11) primary key,
    name varchar(20),
    age int
)

#查看user表中的索引
show index from user;

创建单列索引:

#创建单列索引,只能包含一个字段
create index name_index on user(name);

创建唯一索引:

#创建唯一索引,只能有一个列
create unique index age_index on user(age);

创建符合索引:

#复合索引
create index name_age_index on user(name,age);

满足复合索引的查询的两大原则:
假如创建的复合索引为三个字段,按顺序分别是(name,age,sex)
在查询时能利用复合索引的查询条件如下:

  • 1、最左前缀原则(如下四种都满足条件)

    select * from user where name = ? 
    select * from user where name = ? and age = ?
    select * from user where name = ? and sex = ?
    select * from user where name = ? and age = ? and sex = ?
    

2.MySQL 引擎在执行查询时,为了更好地利用索引,在查询过程中会动态调整查询字段的顺序!(也就是说,当条件中的字段全部达到复合索引中的字段时,可以动态调整字段顺序,使其满足最前左缀)

#可以使用复合索引:索引中包含的字段数都有,只是顺序不正确,在执行的时候可以动态调整为最前左缀
select * from user where sex = ? and age = ? and name = ?
select * from user where age = ? and sex = ? and name = ?

#不可以使用复合索引:因为缺少字段,并且顺序不正确
select * from user where sex = ? and age = ? 
select * from user where age = ? and name = ?
select * from user where age = ?
select * from user where sex = ? 

删除索引的语法

我们可以使用 DROP INDEX 语句来删除索引。

DROP INDEX 的语法:

DROP INDEX index_name ON table_name;

标签:name,什么,索引,user,where,age,select
From: https://www.cnblogs.com/ZWJ7671277/p/18381048

相关文章

  • MySQL的 索引名 ,不同的表 可以 同一个索引名吗
    在MySQL中,不同的表可以使用相同的索引名。MySQL的索引名是在表级别定义的,这意味着索引名的作用域限定于其所属的表。因此,即使两个或多个表拥有相同名称的索引,也不会引起冲突,因为MySQL会根据表名和索引名的组合来唯一标识索引。例如,如果你有两个表users和products,并且你想在这两个......
  • MPG是什么格式?MPG格式用什么播放器打开?
    MPG(MPEG)是一种常用的视频格式,广泛应用于存储和传输视频数据。由于其历史久远且兼容性好,许多不同的播放器都能支持MPG格式的播放。本教程将向你介绍几种常见的能够播放MPG格式视频的播放器,并指导你如何使用它们。什么是MPG格式?MPG文件通常包含使用MPEG-1或MPEG-2标准压缩的......
  • 什么是前端模块化
    面试中,关于打包工具的相关知识是非常常见的考题,无可避免的可能会被问到,为什么需要使用到打包工具、或前端工程化的实现,而要回答这些问题前,需要先了解的就是前端模块化。所以在本篇笔记中,会让大家了解前端模块化的演进和功用。文末有我帮助500多人拿到前端offer的文章!!!什么......
  • 什么是锚文本?
    什么是锚文本?锚文本是链接中可见的可点击文本。它通常以与周围文本不同的颜色显示,并且通常带有下划线。好的链接文本会告诉读者点击链接后会得到什么。使用正确的锚文本会增加用户点击链接的机会,并通过提供上下文来帮助搜索引擎。锚文本为你的页面和你链接的内容之间的关系提......
  • 折腾 Quickwit,Rust 编写的分布式搜索引擎-官方教程
    快速上手在本快速入门指南中,我们将安装Quickwit,创建一个索引,添加文档,最后执行搜索查询。本指南中使用的所有Quickwit命令都在CLI参考文档中进行了记录。https://quickwit.io/docs/main-branch/reference/cli使用Quickwit安装程序安装QuickwitQuickwit安装程序会......
  • 大模型如何赚钱,杀手级应用是什么、创业机会在哪里?
    除了通义大模型外,MiniMax、月之暗面、智谱AI、猎户星空、零一万物、百川智能六家大模型厂商已经与钉钉达成合作。目前,钉钉生态伙伴总数超过5600家,其中AI生态伙伴已经超过100家;钉钉AI每天调用量超1000万次。在下午的圆桌对话环节,硅星人创始人骆轶航、金沙江创投主管合伙......
  • MySQL索引类型
    一、简介MySQL目前主要有以下几种索引类型:1.普通索引2.唯一索引3.主键索引4.组合索引5.全文索引二、语句CREATETABLEtable_name[col_namedatatype][unique|fulltext][index|key][index_name](col_name[length])[asc|desc]1.unique|fulltext为可选参数,分别表示唯一索引......
  • 为什么说 Swoole 是 PHP 程序员技术水平的分水岭?
    大家好,我是码农先森。谈到这个话题有些朋友心中不免会有疑惑,为什么是Swoole而不是其他呢?因为Swoole是基于C/C++语言开发的高性能异步通信扩展,覆盖的特性足够的多,有利于PHP程序员接触更全面的技术知识点。大多数的朋友踏入到PHP的大门都是因其简单的语法及其弱类型的特......
  • 异源数据同步 → DataX 为什么要支持 kafka?
    开心一刻昨天发了一条朋友圈:酒吧有什么好去的,上个月在酒吧当服务员兼职,一位大姐看上了我,说一个月给我10万,要我陪她去上海,我没同意朋友评论道:你没同意,为什么在上海?我回复到:上个月没同意前情回顾关于DataX,官网有很详细的介绍,鄙人不才,也写过几篇文章异构数据源同步之数据......
  • [Mysql]索引选型
    索引底层数据结构选型Hash表哈希表是键值对的集合,通过键(key)即可快速取出对应的值(value),因此哈希表可以快速检索数据(接近O(1))。为何能够通过key快速取出value呢?原因在于哈希算法(也叫散列算法)。通过哈希算法,我们可以快速找到key对应的index,找到了index也就找到了对......