MySQL中如何设置唯一索引,联合索引?

那天我帮邻居老王整理电脑上的照片。
他抱怨说,每当他搜索特定年份的照片时,速度都很慢,就像卡住了一样。
我打开它的数据库管理工具,看到一个记录照片信息的表格。
表中有一个字段称为“恢复日期”。
我问他为什么不使用这个字段来创建索引。
他愣了一下,表示自己以前也尝试过,但发现没用。

在MySQL中创建索引就像为一本书创建索引一样。
想想看,如果每本书都充满了索引,查找起来会更快,但是每次向书中添加新内容时,都必须重新排列所有索引,对吧?老王的照片表最终只是在“拍摄日期”字段中添加了一个普通索引。

我检查了表结构。
哦,对了,那个表有 8 0,000 条记录。
我尝试运行一个查询:“从照片中选择拍摄日期在‘2 02 3 -06 -01 ’和‘2 02 3 -06 -3 0’之间的位置”。
当没有索引时,必须逐一扫描数据库;添加索引后,不到一秒就出来了。
这就是普通索引的优点。

但今天我突然想到,如果老王喜欢拍猫,是不是也可以为“拍摄对象”字段创建一个索引呢?等等,在他的表中有1 5 0,000个“被拍摄物体”的不同值。
如果全部排序,索引文件可能比原始数据大。
这就提出了一个问题:索引文件有多大?
更要注意创建唯一索引。
昨天,当我向公司公告表添加唯一索引时,我忘记检查数据中是否有重复的发布时间。
结果执行ALTER TABLE时,系统报错,提示违反了唯一约束。
这个教训很深刻:当数据量很大时,首先检查重复,然后创建唯一索引。

后来老王给我看了他的数据库性能分析报告。
2 02 3 年 6 月,他的计算机执行了 1 ,2 7 8 个查询,其中 5 4 3 个由于数据库查询速度慢而被阻止。
他说,现在他终于明白为什么自己老是抱怨电脑卡顿了:不是电脑问题,而是数据库索引不正确。

等等,联合索引的顺序似乎很重要?如果字段倒置的话查询性能会差很多吧?

如何在mysql中设置唯一索引

设置唯一索引:进入表设计页面,切换到索引,将字段设置为唯一,选择唯一类型,选择Btree索引,然后保存。
这是一个陷阱,不要相信默认索引是Btree,不要这样做。

MySQL中如何设置唯一索引,联合索引?

嘿兄弟,对了,我在一家电商公司做数据库优化的时候,跟索引有关。
记得有一次想给商品分类表wb_blog添加唯一索引,防止同一个类别出现重名。
这样做时,我在使用 CREATE TABLE 语句时愚蠢地直接添加了 UNIQUE KEY。
后来我发现表已经创建了,我必须使用 CREATE UNIQUE INDEX 来添加它。
这只是一个猫场。

此时我错误地认为添加主键PRIMARY KEY就会自动创建唯一索引。
结果,它必须单独完成。
当时我就一头雾水,差点就去网上搜索“如何在MySQL中创建唯一索引”。

现在,我们再次创建联合索引。
这意味着任务管理系统应该同时优化任务标题和创建时间的查询。
我使用了 ALTER TABLE 和 ADD INDEX。
其结果是提高了效率并显着改善了用户体验。

但现在想来,索引确实是一把双刃剑。
我记得有一次向一个大表添加了一堆索引。
最初是想提高查询速度,但是写入数据时系统会挂掉。
就在那时我意识到拥有太多索引会增加维护成本并影响写入性能。

因此,在创建索引时,需要综合考虑查询频率、数据量、更新频率等,没被坑过的人可能不明白,但我却得到了血淋淋的教训。
嘿,如果我说太多,我就会开始哭泣。