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

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.lryc.cn/news/2384151.html

相关文章:

  • MySQL Host 被封锁解决方案(全版本适用 + Java 后端优化)
  • wifi 如果检查失败,UI 就会出现延迟或缺失打勾的现象。
  • 点云(point cloud):自动驾驶的“三维扫描图“
  • Redis 中如何保证缓存与数据库的数据一致性?
  • Oracle RAC节点时间差异同步测试
  • python 打卡DAY27
  • 位运算及其算法
  • flutter getx路由管理、状态管理、路由守卫中间件、永久储存get_storage
  • 贪心算法之跳跃游戏问题
  • Dockers Compose常用指令介绍
  • YOLOv11 性能评估与横向对比
  • kafka在线增加分区副本数
  • Unity 如何使用Timeline预览、播放特效
  • GIM发布新版本了 (附rust CLI制作brew bottle流程)
  • GitHub 趋势日报 (2025年05月21日)
  • MySQL篇-其他面试题
  • iOS 蓝牙开发中的 BT 与 BLE
  • Git的工作区,暂存区,本地仓库
  • 鸿蒙Flutter实战:21-混合开发详解-1-概述
  • MySQL错误1419(HY000)解决方案:SUPER权限缺失与二进制日志启用冲突的3种处理方式
  • [架构之美]从PDMan一键生成数据库设计文档:Word导出全流程详解(二十)
  • 大量程粗糙度轮廓仪适用于哪些材质和表面?
  • linux 查看java的安装路径
  • C 语言程序终止的艺术:理解 return main 与 exit() 函数
  • 数据实时同步:inotify + rsync 实现数据实时同步
  • LeetCode 404.左叶子之和的迭代求解:栈结构与父节点定位的深度解析
  • Unity-编辑器扩展
  • 【自用-python】生成准心居中exe程序,防止云电脑操作时候鼠标偏移
  • Lucide:一款精美的开源矢量图标库,前端图标新选择
  • 在Rocky Linux 8.10上安装Nginx