当前位置:网站首页>MySql之索引
MySql之索引
2022-08-05 05:13:00 【来一杯奶喵】
文章目录
前言
MySql中的索引可以很大程度的提高MySql的检索效率,提高MySql的运行效率,可以确保所查数据的唯一性。因此学习索引也是十分重要的。下面我带大家稍微了解一下MySql中的索引。
一、索引是什么?
索引是对数据库表中一列或多列的值进行排序的一种结构。使用索引可以快速访问数据库表中的特定信息。
二、常见的索引种类
1.普通索引
这是最基本的索引,它没有任何限制。
代码如下:
create table 表名(
字段1 int(11) not null,
index/key(字段1)
)
--或者
create index 索引名 on 表名 (字段名)2.唯一索引
不允许有索引值相同的行,从而禁止重复的索引或键值。
代码如下:
create table 表名(
字段名 int(11) not null unique,
#或 unique key(字段名)
)
--或
create unique index 索引名 on 表名 (字段名)3.主键索引
在数据库关系中为表定义一个主键将自动创建主键索引。一个表只能有一个主键,不允许有空值。
代码如下:
create table 表名(
字段名 int(11) auto_increment primary key,
#或 primary key(字段名)
)4.组合索引
在多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀匹配原则。
最左前缀匹配原则(比如创建了多列索引(stu_name,stu_age,stu_sex)会优先匹配stu_name字段,再到age,sex中间不能跳过,遇到范围查询就会停止匹配)。
代码如下:
create table 表名(
字段名1 int(11) not null,
字段名2 varchar(10) not null,
index(字段名1,字段名2)
)5. 全文索引
搜索引擎的关键技术,用于检索文本信息,可以是词语或者段落。
注意:
- 只有char/varchar/text类型的字段能够创建全文索引。
- 当写入大量数据时,先写入数据再创建全文索引,提高效率。
- MySql内置ngram解析器,可解析中日韩文字,有汉字时要启用。
代码如下:
create table 表名(
字段名 varchar(32) not null,
fulltext key(字段名,字段名,字段名)with parser ngram
)ENGINE=innodb三、关于索引失效的情况
- 使用%XXX左模糊(like)查询
- 组合索引,不满足最左原则时
- 使用索引比全表扫描还慢时,不要使用索引
- 用or分割条件,or前后只要有一个列没有索引,就不会使用索引
- 使用!=或<>操作符时
- 对文字进行null值判断时
- 索引列带有运算时
总结
- 索引是对数据库表中一列或多列的值进行排序的一种结构。
- 索引分为:普通索引、主键索引、唯一索引、组合索引、全文索引。
- 索引失效情况:%开头模糊查询、不满足最左原则、or、!=或<>、null值判断、运算、索引慢
希望以上的内容对看到这篇文章的你有所帮助。
边栏推荐
猜你喜欢

数据库 单表查询

【过一下 17】pytorch 改写 keras
![[Go through 3] Convolution & Image Noise & Edge & Texture](/img/7b/2214020cadf06d9211fd40fb5f1b63.png)
[Go through 3] Convolution & Image Noise & Edge & Texture

Algorithms - ones and zeros (Kotlin)

【过一下3】卷积&图像噪音&边缘&纹理

【NFT网站】教你制作开发NFT预售网站官网Mint作品

Structured Light 3D Reconstruction (2) Line Structured Light 3D Reconstruction

DOM and its applications

【过一下7】全连接神经网络视频第一节的笔记

Difference between for..in and for..of
随机推荐
A blog clears the Redis technology stack
学习总结week3_2函数进阶
es6迭代协议
2022 Hangzhou Electric Multi-School 1st Session 01
Flink HA安装配置实战
SQL(一) —— 增删改查
[Decoding tools] Some online tools for Bitcoin
day8字典作业
Flink 状态与容错 ( state 和 Fault Tolerance)
解决端口占用问题
机器学习(一) —— 机器学习基础
The mall background management system based on Web design and implementation
对数据排序
Error creating bean with name 'configDataContextRefresher' defined in class path resource
js实现数组去重
1068找到更多的硬币
Lecture 3 Gradient Tutorial Gradient Descent and Stochastic Gradient Descent
【过一下10】sklearn使用记录
学习总结week3_1函数
vscode要安装的插件