当前位置: 首页 > news >正文

MySQL 索引的增删改查

MySQL 索引的增删改查

1 建表时创建索引

[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY  [别名] (字段名 [(长度)] [ASC|DESC] )

主键直接写:

PRIMARY KEY (Id)

例如:

CREATE TABLE people (id int NOT NULL PRIMARY KEY AUTO_INCREMENT,last_name varchar(10) NOT NULL,first_name varchar(10) NOT NULL,age int NOT NULL,brithday DATE NOT NULL,create_date date NOT NULL,KEY one_index (last_name, first_name, brithday),KEY two_index (last_name, first_name)
)
  • UNIQUE是可选参数,表示索引为唯一性索引;
  • FULLTEXT是可选参数,表示索引为全文索引;
  • SPATIAL也是可选参数,表示索引为空间索引;
  • INDEXKEY参数用来指定字段为索引,选择其中一个就可以了,作用一样;
  • 别名是可选参数,用来给创建的索引取的新名称;
  • 字段名参数指定索引对应的字段的名称,该字段必须为前面定义好的字段;
  • 长度是可选参数,其指索引的长度,必须是字符串类型才可以使用;
  • ASCDESC都是可选参数,"ASC"参数表示升序排列,"DESC"参数表示降序排列。

2 创建索引

alter table 方式

ALTER TABLE table_name ADD INDEX index_name (column_list)
ALTER TABLE table_name ADD UNIQUE (column_list)
ALTER TABLE table_name ADD PRIMARY KEY (column_list)
  • table_name是要增加索引的表名
  • column_list指出对哪些列进行索引,多列时各列之间用逗号分隔
  • index_name索引名可选,缺省时,MySQL将根据第一个索引列赋一个名称。
  • PRIMARY KEY索引仅是一个具有名称 PRIMARYUNIQUE索引。这表示一个表只能包含一个PRIMARY KEY,因为一个表中不可能具有两个同名的索引。

另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。

create index 方式

CREATE INDEX index_name ON table_name (column_list)
CREATE UNIQUE INDEX index_name ON table_name (column_list)
  • table_nameindex_namecolumn_listALTER TABLE语句含义相同
  • 索引名不可选

另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。

3 删除索引

DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
  • 前两条语句是等价的,删除掉table_name中的索引index_name
  • 第3条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。

4 查看索引

mysql> show index from tblname;
mysql> show keys from tblname;
字段含义
Table表的名称
Non_unique如果索引不能包括重复词,则为0。如果可以,则为1
Key_name索引的名称
Seq_in_index索引中的列序列号,从1开始
Column_name列名称
Collation列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)
Cardinality索引中唯一值的数目的估计值。通过运行ANALYZE TABLEmyisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大
Sub_part如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL
Packed指示关键字如何被压缩。如果没有被压缩,则为NULL
Null如果列含有NULL,则含有YES。如果没有,则该列含有NO
Index_type用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)
http://www.xdnf.cn/news/572347.html

相关文章:

  • Docusaurus Umami
  • 算法优选系列(9.BFS 解决拓扑排序)
  • GStreamer (四)交叉编译
  • 华为eNSP无线AC/AP组网实战
  • 基于大模型的闭合性尺桡骨干骨折全方位诊疗研究报告
  • 现代计算机图形学Games101入门笔记(二十)
  • V少JS基础班之第五弹
  • ElasticSearch导读
  • 【网络安全】日志采集、监控任务守护进程详细教程(附实战案例)
  • 打卡31天
  • Python学习Day1:安装
  • 谷歌2025年I/O开发者大会热点总结
  • shell脚本总结3
  • 【LLMs篇】12:Qwen3 技术报告翻译
  • 人工智能路径:技术演进下的职业发展导航
  • 20个关于Java编程语言的常见问题
  • 从微积分到集合论(1630-1910)(历史简介)——第2章——牛顿(Newton)和莱布尼兹(Neibniz)以及莱布尼兹传统(H.J.M.Bos)
  • 2025年人工智能新应用与新技术全景解析
  • Qt+线段拖曳示例代码
  • 【UE5】环形菜单教程
  • 现代计算机图形学Games101入门笔记(十九)
  • 汽车电子电气架构诊断功能开发全流程解析
  • Linux nbd 网络块设备(2)-内核实现
  • fork 和 写时拷贝
  • NV009NV010美光闪存颗粒NV011NV012
  • 【Elasticsearch】字段别名
  • el-radio-group 与 el-dropdown 一起使用时的注意事项
  • Pytorch基础操作
  • cookie跨域共享踩的坑
  • sqli-labs第十八关——POST-UA注入