当前位置:网站首页>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值判断、运算、索引慢
希望以上的内容对看到这篇文章的你有所帮助。
边栏推荐
猜你喜欢
A blog clears the Redis technology stack
【过一下7】全连接神经网络视频第一节的笔记
位运算符与逻辑运算符的区别
多线程查询结果,添加List集合
OFDM Lecture 16 5 -Discrete Convolution, ISI and ICI on DMT/OFDM Systems
jvm three heap and stack
【After a while 6】Machine vision video 【After a while 2 was squeezed out】
Flink 状态与容错 ( state 和 Fault Tolerance)
My 的第一篇博客!!!
【练一下1】糖尿病遗传风险检测挑战赛 【讯飞开放平台】
随机推荐
[Go through 8] Fully Connected Neural Network Video Notes
Mysql5.7 二进制 部署
【过一下9】卷积
鼠标放上去变成销售效果
OFDM Lecture 16 5 -Discrete Convolution, ISI and ICI on DMT/OFDM Systems
数据库实验五 备份与恢复
JSX基础
【过一下15】学习 lstm的一周
【NFT开发】设计师无技术基础保姆级开发NFT教程在Opensea上全套开发一个NFT项目+构建Web3网站
【过一下4】09-10_经典网络解析
jvm three heap and stack
Matplotlib(三)—— 实践
Returned object not currently part of this pool
【Transfer】What is etcd
el-table鼠标移入表格改变显示背景色
coppercam入门手册[6]
02.01-----The role of parameter reference "&"
【练一下1】糖尿病遗传风险检测挑战赛 【讯飞开放平台】
怎么更改el-table-column的边框线
拿出接口数组对象中的所有name值,取出同一个值