MySQL索引优化与使用指南:全面解析各类索引及其适用场景

创始人
2024-12-16 01:22:38
0 次浏览
0 评论

MySQL——关于索引的总结

如果我们不指定,Mysql会自动寻找非空的唯一索引作为主键。
如果没有这个字段,Mysql会创建一个大小为6字节的自增主键。

先说表结构:用户表tb_user的结构如下:不要对索引列进行操作,索引会失效。

空间索引:空间索引是在空间数据类型的字段上建立的索引。
MYSQL中有4种空间数据类型:GEOMETRY、POINT、LINESTRING和POLYGON。
MYSQL已使用SPATIAL关键字进行了扩展,允许使用用于创建常见索引类型的语法来创建空间索引。

索引可以加快数据检索操作的速度,但会使数据修改操作变慢。
每次修改数据记录时,都必须刷新索引。
为了在一定程度上弥补这个缺点,很多SQL命令都有DELAY_KEY_WRITE条目。

综上所述,Mysql中的B树索引有以下主要特点:Mysql中的B树索引有两种数据存储形式,一种是聚集索引,一种是二级索引。

mysql有那些索引?分别在什么场景使用

1.普通索引

这是最基本的索引,没有任何限制。
创建方法有以下几种:

1.创建索引

代码如下:

CREATEINDEXindexNameONmytable(username(Length));

THISISCHAR;如果类型是VARCHAR;如果长度是BLOB和TEXT类型,则长度可能小于字段的实际长度;

2.修改表结构

代码如下:

ALTERmytableADDINDEX[indexName]ON(username(length))--创建时直接设置。
桌子。

CREATETABLEmytable(IDINTNOTNULL,usernameVARCHAR(16)NOTNULL,INDEX[indexName](用户名(长度)));

--删除索引的语法:

DROPINDEX[indexName]ONmytable;

唯一索引

这与之前的普通索引列,除了值之外,索引都是一样的;然而,空值是允许的。
在综合指数中;列值的任何组合都必须是唯一的。
它有以下创建方法:

代码如下:

CREATEUNIQUEINDEXindexNameONmytable(username(length))

--修改表结构

ALTERmytableADDUNIQUE[indexName]ON(username(length))

---创建表时直接设置

CREATEABLEmytable(IDINTNOTNULL,usernameVARCHAR(16)NOTNULL,UNIQUE[indexName](username(length));

主3键索引

这是一个特殊的唯一索引,不允许空值。
一般来说,创建表时会创建主键索引:

代码如下:

CREATEABLEmytable(IDINTNOTNULL,usernameVARCHAR(16)NOTNULL,PRIMARYKEY(ID));

CREATEABLEmytable(IDINTNOTNULL,usernameVARCHAR(16)NOTNULL,PRIMARYKEY(ID));

是的,您还可以使用ALTER命令。
记住:一张表只能有一个主键。

4.复合索引

在表中添加多个字段,可以直观地对比单列索引和复合索引:

代码如下。
:

CREATETABLEmytable(IDINTNOTNULL,usernameVARCHAR(16)NOTNULL,cityVARCHAR(50)NOTNULL,ageINTNOTNULL);

二:使用标签的注意事项

使用标签时;有一些提示和注意事项:

索引不得包含NULL值。

只要该列包含NULL值;它将不会被包含在索引中。
所以,设计数据库时;该字段的默认值不应为NULL。

2.使用短索引

要索引字符串,如果可能,您必须指定前缀长度。
例如,如果您有CHAR(255)列;如果大多数值在前10或20个字符内都是唯一的。
不要对整个列建立索引。
短索引不仅可以提高查询速度,还可以节省磁盘空间和I/O操作。

3.索引列排序

MySQL查询仅使用一个索引;因此,如果在place子句中使用索引。
有序列不使用索引。
所以,当数据库默认排序满足要求时,不要使用排序功能。
如果需要的话最好为这些列创建复合索引。

4.Like语句函数

一般来说,如果要用的话,怎么用也是一个问题。
不使用“%aaa%”这样的索引,但可以使用“aaa%”这样的索引。

5.不要在列上运行

select*fromuserswhereYEAR(adddate)<2007>

在每一行上运行;由于它是无效的并且正在执行全表扫描,因此我们可以将其更改为:

select*fromuserswhereadddate<'2007-01-01';

6.NOTIN和操作。

使用:SQL优化原理

常用的简单规则如下:

1.不要有超过5个表连接(JOIN)

2.考虑使用临时表或电子表格来存储中间结果。

3.使用更少的细节

4。
不要太深入地收集意见。

5.由于表是相连的,更多的编译时间和连接。
控制性能就越困难。

6.最好将连接分成小部分,一次只处理一个部分。

7.优先考虑会显着降低结果的连接。

8.分区的好处不仅是减少SQLServer优化的时间,而且可以让SQL语句以可预测的方式和顺序执行。

如果你必须连接多个表来获取数据。
这可以被视为设计缺陷。

文章标签:
MySQL 索引
热门文章
1
Python编程入门:全面解析Pytho... python的基本语法基本的Python语法如下:1.变量的定义。在编程语言中,...

2
Python字典操作全解析:添加、修改、... &#65279;Pythondict字典基本操作(包括添加、修改、删除键...

3
Python错误处理与异常处理:构建稳定... 2.5错误处理与异常在编程领域,错误处理和异常处理是保证程序稳定性和健壮性的关键...

4
Python数据转换攻略:字符串、列表、... Python字典、字符串及列表的相互转换Python中数据转换的艺术:从字典和字...

5
Python列表相加与求和技巧解析 重温python基础:列表相加的方法(两个list[]加法)今天,我们来看看Py...

6
Python运行快捷键大揭秘:高效操作,... python运行按哪个键运行Python时的快捷键包括Ctrl+Shift+F1...

7
Python字符与数字互转攻略:轻松掌握... python&#160;字符与数字如何转换Python是一种功能强大且结...

8
Python字符串转列表:两种常用方法解... python怎么将字符串转换为列表Python中将字符串转换为列表的方法有多种,...

9
Python字符串转列表:两种常用方法解... python怎么将字符串转换为列表在Python中将字符串转换为列表的方法有很多...

10
Python列表转字符串全攻略:掌握四种... Python列表到字符串–如何在Python中转换列表在Python中,将列表转...