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

关于索引的使用

前言

大家好,我是Maybe。最近在学习索引。为大家分享一下索引的创建以及使用索引的注意事项。

如何创建索引

自动创建

当我们为一张表加主键约束(Primary key),外键约束(Foreign Key),唯一约束(Unique)时,MySQL会自动为对应的列自动创建一个索引。

如果表不指定任何约束时,MySQL会自动为每一列生成一个索引并用 ROW_ID进行标识。

手动创建

-- 创建普通索引
-- 创建表时的时候指定主键
CREATE table t_pk1(
id BIGINT PRIMARY key auto_increment,
name varchar(20)
);
show index from t_pk1;-- 创建表的时候单独指定主键列
CREATE table t_pk2(
id BIGINT  auto_increment,
name varchar(20),
PRIMARY KEY(id)
);-- 修改表中的列为主键索引
CREATE table t_pk3(
id BIGINT,
name VARCHAR(20)
);
desc t_pk3;
show index from t_pk3;
-- 修改表中的列为主键索引
ALTER table t_pk3 add PRIMARY KEY(id);
alter table t_pk3 add id BigINt auto_increment;-- 创建唯一键的索引
-- 创建表时创建唯一键
CREATE table t_test_1(
id bigint PRIMARY KEY auto_increment,
name varchar(20) UNIQUE
);
desc t_test_1;
show index from t_test_1;-- 修改表中的列为唯一索引CREATE table t_test_2(
id bigint PRIMARY KEY auto_increment,
name varchar(20) 
);
ALTER table t_test_2 add unique(name);
show index from t_test_2;-- 普通索引
-- 创建表时创建普通索引CREATE table t_index1(
id bigint PRIMARY key auto_increment,
name varchar(20) unique,
sno varchar(20),
index (sno)
);
desc t_index1;
show index from t_index1;-- 修改表中的列为普通索引
CREATE table t_index2(
id bigint PRIMARY key auto_increment,
name varchar(20) unique,
sno varchar(20)
);
alter table t_index2 add index(sno);
show index from t_index2;-- 单独创建索引并指定索引名
CREATE table t_index3(
id bigint PRIMARY key auto_increment,
name varchar(20) unique,
sno varchar(20)
);
show index from t_index3;
create index idx_t_index3_sno on t_index3(sno); 
-- 删除索引idx_t_index3_sno
-- 索引名最好定义为 idx_表名_列名
alter table t_index3 drop index idx_t_index3_sno;
create index idx_t_index3_sno on t_index3(sno);-- 复合索引
-- 创建表的时候指定索引
CREATE table t_index4(
id bigint PRIMARY key auto_increment,
name varchar(20) unique,
sno varchar(20),
class_id bigint,
index (sno,name)
);
show index from t_index4;-- 单独创建索引并指定索引名CREATE table t_index5(
id bigint PRIMARY key auto_increment,
name varchar(20) unique,
sno varchar(20),
class_id bigint
);
show index from t_index5;
create index idx_t_index5_sno_name on t_index5(sno,name);-- 删除主键索引前,必须先将自增列改为非自增
ALTER table t_index5 MODIFY id BIGINT;
alter table t_index5 drop PRIMARY KEY;
show index from t_index5;
-- 删除复合索引
alter table t_index5 drop index  idx_t_index5_sno_name;

 使用索引的注意事项

 

结语 

再见~希望可以帮助到有需要的人~

 

http://www.xdnf.cn/news/5959.html

相关文章:

  • Fiori学习专题四十一:表单控件
  • js中的同步方法及异步方法
  • [中国版 Cursor ]?!CodeBuddy快捷搭建个人展示页面指南
  • 20250513_问题:由于全局Pytorch导致的错误
  • 【Nacos】env NACOS_AUTH_TOKEN must be set with Base64 String.
  • TCP协议详细讲解及C++代码实例
  • 【算法笔记】ACM数论基础模板
  • ContextAnnotationAutowireCandidateResolver的作用
  • 5月13日复盘
  • PAC文件:智能代理配置的瑞士军刀
  • rtty操作记录说明
  • 保险销售系统对接保险公司接口的常见技术架构
  • 阿里二面:聊聊 MySQL 主从同步方案的优缺点
  • 【兽医电子处方软件】佳易王宠物医院电子处方管理系统:宠物医院诊所用什么软件?一键导入配方模板软件程序实操教程 #操作简单 #宠物医院软件下载安装
  • C语言中的宏
  • 数控滑台:革新传统加工方式的利器
  • 谁在守护我们的危险时刻
  • C语言之旅5---分支与循环【2】
  • 学习第一遍 -- 第一章:SoC设计绪论
  • 从零开始掌握FreeRTOS(1)移植到STM32
  • uniapp+vue3+uview来开发我们的项目
  • 监控易运维:URL监控,守护Web业务的“哨兵”
  • 携程酒店 phantom-token token1004 分析
  • KT148A语音芯片发码很难播放_将4脚对地一下再发正常,什么原因?
  • C字符串的特点
  • 深度学习的相关术语介绍(杂乱版-想到啥介绍啥)
  • S7-1200 PLC与梅特勒-托利多IND360称重仪表通信
  • 使用聊天模型和提示模板构建一个简单的 LLM 应用程序
  • Protobuf工具
  • Hadoop是什么?(组件、特性、应用场景、生态系统等)