MySQL索引

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 RDS SQL Server,独享型 2核4GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: MySQL索引

MySQL索引的创建、删除

#创建普通索引  创建普通索引时不需要加任何unique fulltext spatial参数

create table index1 (id int,name varchar(20),sex boolean,index(id));

#查看表结构

show create table index1;

#使用explain语句查看索引是否被使用

explain select * from index1 where id = 1;

 

#创建唯一索引

create table index2 (id int unique,name varchar(20), unique index index2_id(id asc));

#查看表结构

show create TABLE index2;

explain select * from index2 where id = 1;

 

#创建全文索引

create table index3 (id int, info varchar(20),fulltext index index3_info(info))engine = MyISAM;

#查看表结构

show create TABLE index3;

 

#创建单列索引

create table index4 (id int,subject varchar(30),index index4_st(subject(10)));

#查看表结构

show create TABLE index4;

 

#创建多列索引     查询过程中,只有使用了这些字段中的第一个字段时,索引才会被使用,如果不用第一个字段查询,该索引不会启用

create table index5(id int ,name varchar(32),sex varchar(10),index index5_duo(name(10),sex(10)));

#查看表结构

show create TABLE index5;

 

#创建空间索引   创建空间索引时必须使用spatial参数来设置,表的存储引擎必须是myisam,而且索引字段必须有非空约束

create table index6(id int ,space geometry not null,spatial index index6_sp(space))ENGINE MyISAM;

#查看表结构

show create TABLE index6;

 

#在已存在的表上创建普通索引

create index index7_id on student(stuID);

#查看表结构

show create TABLE student;

 

#在已存在的表上创建唯一性索引

create unique INDEX index8_id on borrow(borrowID);

#查看表结构

show create TABLE borrow;

 

#在已存在的表上创建全文索引

create FULLTEXT index index9_info on index3(info);

#查看表结构

show create TABLE index3;

 

#在已存在的表上创建单列索引

create index index10_aut on book(author(4));

#查看表结构

show create TABLE index3;

 

#在已存在的表上创建多列索引

create index index11_duo on borrow(T_time,B_time);

#查看表结构

show create TABLE index3;

 

#在已存在的表上创建空间索引

create SPATIAL index index12_sp on index6(space);

#查看表结构

show create TABLE index6;

 

#用alter table 语句来创建普通索引

alter table index1 add index index1_altername(name(10));

#查看表结构

show create TABLE index1;

 

#用alter table 语句来创建唯一

alter table index2 add unique index2_altername(name(10));

#查看表结构

show create TABLE index2;

 

#用alter table语句创建全文索引

alter table index3 add FULLTEXT index3_alterquan(info);

#查看表结构

show create TABLE index3;

 

#用alter  table 语句创建单列索引

alter table index4 add index index4_alterdan(subject);

 

#用alter table语句创建多列索引

alter table borrow add index index4_alterduo(T_time,B_time);

 

#用alter table语句创建空间索引

alter table index6 add SPATIAL index index5_alterspace(space);

 

#删除索引

show create TABLE index6;

#drop index 索引名 on 表名;

drop index index5_alterspace on index6;

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
SQL 存储 关系型数据库
mysql加索引真的会锁表吗?揭秘背后的技术细节与规避策略
【8月更文挑战第16天】在数据库管理中,添加索引能大幅提升查询效率。MySQL执行此操作时的锁定行为常引起关注。文章详细解析MySQL中索引添加时的锁定机制及其原理。不同存储引擎及SQL语句影响锁定策略:MyISAM需全表锁定;InnoDB提供更灵活选项,如使用`ALTER TABLE... LOCK=NONE`可在加索引时允许读写访问,尽管可能延长索引构建时间。自MySQL 5.6起,在线DDL技术可进一步减少锁定时间,通过`ALGORITHM=INPLACE`和`LOCK=NONE`实现近乎无锁的表结构变更。合理配置这些选项有助于最小化对业务的影响并保持数据库高效运行。
11 4
|
3天前
|
SQL JavaScript 关系型数据库
Mysql索引不当引发死锁问题
本文通过真实案例解析了MySQL在高并发环境下出现死锁的问题。数据库表`t_award`包含多个索引,但在执行特定SQL语句时遭遇索引失效,导致更新操作变慢并引发死锁。分析发现,联合索引`(pool_id, identifier, status, is_redeemed)`因`identifier`允许为空值而导致索引部分失效。此外,`pool_id`上的普通索引产生的间隙锁在高并发下加剧了死锁风险。为解决此问题,文中提出了调整索引顺序至`(pool_id, status, is_redeemed, identifier)`等方案来优化索引使用,进而减轻死锁现象。
|
5天前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
|
19天前
|
存储 SQL 关系型数据库
(六)MySQL索引原理篇:深入数据库底层揭开索引机制的神秘面纱!
《索引原理篇》它现在终于来了!但对于索引原理及底层实现,相信大家多多少少都有了解过,毕竟这也是面试过程中出现次数较为频繁的一个技术点。在本文中就来一窥`MySQL`索引底层的神秘面纱!
|
19天前
|
SQL 存储 关系型数据库
(五)MySQL索引应用篇:建立索引的正确姿势与使用索引的最佳指南!
在本篇中,则重点讲解索引应用相关的方式方法,例如各索引优劣分析、建立索引的原则、使用索引的指南以及索引失效与索引优化等内容。
|
23天前
|
SQL 缓存 关系型数据库
MySQL 查询索引失效及如何进行索引优化
MySQL 查询索引失效及如何进行索引优化
58 1
|
26天前
|
SQL 缓存 关系型数据库
面试题MySQL问题之实现覆盖索引如何解决
面试题MySQL问题之实现覆盖索引如何解决
30 1
|
26天前
|
存储 SQL 索引
面试题MySQL问题之使用SQL语句创建一个索引如何解决
面试题MySQL问题之使用SQL语句创建一个索引如何解决
31 1
|
13天前
|
缓存 关系型数据库 MySQL
MySQL调优秘籍曝光!从索引到事务,全方位解锁高可用秘诀,让你的数据库性能飞起来!
【8月更文挑战第6天】MySQL是顶级关系型数据库之一,其性能直接影响应用的高可用性与用户体验。本文聚焦MySQL的高性能调优,从索引设计到事务管理,逐一解析。介绍如何构建高效索引,如联合索引`CREATE INDEX idx_order_customer ON orders(order_id, customer_id);`,以及索引覆盖查询等技术。
36 0
|
19天前
|
存储 SQL 关系型数据库
(四)MySQL之索引初识篇:索引机制、索引分类、索引使用与管理综述
本篇中就对MySQL的索引机制有了全面认知,从索引的由来,到索引概述、索引管理、索引分类、唯一/全文/联合/空间索引的创建与使用等内容,进行了全面概述。

相关产品

  • 云数据库 RDS MySQL 版