mysql 整理(六)索引,更新数据
更新数据
UPDATE tablename
SET column1 = value1,column2 = value2 ,。。。。,columnN = valueN
where id = 1;
删除数据
DELETE FROM tablename where id=3;
索引
什么是索引:
一种数据结构,提高数据库中特定数据的查询速度。
索引在存储引擎中实现,每种存储引擎的索引不一定相同,每种存储引擎不一定支持所有索引类型。
索引有:BTREE 和HASH 两种存储类型。
MyISAM 和InnoDB 存储引擎值支持BTREE索引,MEMORY/HEAP支持HASH 和BTREE。
索引优点:
创建唯一索引,保证数据唯一性。
大大加快数据查询速度。
加速表与表之间连接。
显著减少查询中分组和排序的时间。
不利:
创建索引耗费时间。
占磁盘空间。
数据增删改的时候索引要动态维护,降低维护速度。
索引设计原则:
一、并非越多越好,占空间影响增删改表数据的性能。
二、避免添加不必要字段。
三、数据量小的表不要用索引,查询时间比创建索引还短。
四、在不同的值很少的列上不要建立索引比如性别只有男和女,会严重降低数据更新速度。
五、当唯一性是某个数据列的特点,就建立唯一索引可以提高数据查询速度。
六、在频繁分组和排序的列上建立索引,如果待排序的列有多个就建立组合索引。
索引分类:
普通索引和唯一索引
普通索引是基本索引类型匀速插入重复和空值。
唯一索引必须唯一,允许空值,如果是组合索引列值必须唯一,主键索引是特殊唯一索引不允许空值。
单列索引和组合索引
单列索引就是只包含单个列,一个表可以有多个单列索引。
组合索引在标的多个字段组合上创建索引,只有在查询条件中使用这些字段的左边字段,索引才会被使用,组合索引遵守最左前缀
索引创建
普通索引
最基本的索引没有限制,只是加快数据访问速度
CREATE TABLE book
(
id INT(11) AUTO_INCREMENT,
date DATE NOT NULL,
INDEX(date)
);
使用explain 查询索引是否启用
explain select *from book date = "19993366778899" \G
参数:
possible_keys代表可选用索引数
key行是mysql实际选用索引数
key_len行给树索引按字节计算的长度越小越快。
创建唯一索引
UNIQUE INDEX UniqIdx(id)
单列索引
INDEX SingleIdx(name(20))
名为SingleIdx单列索引索引长度为20
组合索引
INDEX MultiIdx(idname,age(1000))
遵守最左前缀,查询可以用 (id,name,age),(id,name)或者id不构成最左前缀就不会启动索引。
全文搜索:
FULLTEXT INDEX FullTxtIdx(info)
空间索引
SPATIAL INDEX spatIdx(g)
在已存在表创建索引
ALTER TABLE table_name ADD [UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (col_name[lenght],....) [ASC|DESC]
也可以使用CREATE INDEX 命令
SHOW INDEX FROM book \G查看表的索引情况
参数
Non_unique 等于1 代表非唯一索引 0代表唯一索引
key_name代表索引名
Seq_in_index表示该字段在索引的位置 单列为1
Column_name 表示定义索引的列字段
Sub_part表示索引的长度。
NULL表示是否可以为空
Index_type 表示索引类型。
删除索引
ALTER TABLE table_name DROP INDEX index_name;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本