表索引——多列索引

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 前言 多列索引,是指在创建索引时所关联的字段不是一个字段,而是多个字段,虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联字段中的第一个字段,多列索引才会被使用。

前言

       多列索引,是指在创建索引时所关联的字段不是一个字段,而是多个字段,虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联字段中的第一个字段,多列索引才会被使用。


一、创建表时定义索引


CREATE TABLE tablename(


   propname1 type1,


   ……


   propnamen type..n,


   INDEX | KEY [indexname] (propname1 [(length)] [ ASC | DESC ],


                            Propname2 [(length)] [ ASC | DESC ],


                             ... ...                              


                            Propnamen [(length)] [ ASC | DESC ])


);


注意:和普通索引定义基本相同,不同之处就是增加了多个索引列。


mysql> create database school;   #创建数据库school


mysql> use school;   #选择数据库school


mysql> create table class(id int, name varchar(128) UNIQUE, teacher varchar(64), INDEX index_mult_columns(id, teacher));       #创建表class, 并建立包含id,teacher字段的多列索引


mysql> show create table class;  #查看表定义


mysql> insert into class values(1, '一班', 'Martin');  # 插入记录1


mysql> insert into class values(1, '二班', 'Rock');   # 插入记录2


mysql> select * from class where id > 0 ;   #仅根据id查询记录会启用多列索引  


二、已存在的表上创建索引

方法一:执行 create 语句

CREATE  INDEX indexname


   ON tablename( propname1 [(length)] [ ASC | DESC ],


                  Propname2 [(length)] [ ASC | DESC ],  


                             ... ...                                


                        Propnamen [(length)] [ ASC | DESC ]  );


在上述语句中,关键字CREATE  INDEX表示用来创建多列索引。


如下例表已存在,可通过CREATE语句创建多列索引:

mysql> create database school;   #创建数据库school


mysql> use school;   #选择数据库school


mysql> create table class(id int, name varchar(128) UNIQUE, teacher varchar(64));       #创建表class, 并建立为id 字段索引


mysql> create  index index_id on class(id, name );  #追加多列索引


mysql> show create table class;  #查看表定义  


方法二:执行 alter table 语句

除了上述两种方式来创建全文索引外,在MySQL中创建全文索引还可以通过SQL语句ALTER来实现,其语法形式如下:


   ALTER TABLE tablename


   ADD INDEX|KEY indexname(propname1 [(length)] [ ASC | DESC ],


                  Propname2 [(length)] [ ASC | DESC ],            


                             ... ...                                          


                        Propnamen [(length)] [ ASC | DESC ]  );



总结

以上就是今天要讲的内容,本文仅仅简单介绍了多列索引的使用。




相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
Java 索引 Spring
多列单个索引和联合索引的区别
多列单个索引和联合索引的区别
55 0
|
3月前
|
TensorFlow 算法框架/工具 索引
索引
【8月更文挑战第13天】索引。
27 1
|
6月前
|
存储 NoSQL 关系型数据库
索引!索引!!索引!!!到底什么是索引?
**索引是数据库中的数据结构,类似书籍目录,加速数据查找和访问。优点包括提升查询性能、数据检索速度、支持唯一性约束及优化排序和连接操作。缺点在于增加写操作开销、占用存储空间、高维护成本和过多索引可能降低性能。常见的索引类型有单值、复合、唯一、聚集和非聚集索引等,实现方式涉及B树、B+树和哈希表。B树和B+树适合磁盘存储,B+树尤其适用于范围查询,哈希索引则适用于快速等值查询。**
56 0
|
6月前
|
SQL 搜索推荐 关系型数据库
|
6月前
|
SQL 关系型数据库 MySQL
关于索引的使用
关于索引的使用
|
存储 关系型数据库 MySQL
了解和认识索引
了解和认识索引 。
62 0
|
6月前
|
存储 算法 关系型数据库
索引总结(2)
索引总结(2)
44 0
|
关系型数据库 MySQL 数据库
了解和认识索引
了解和认识索引。
52 0
表索引——唯一索引
表索引——唯一索引
|
数据库 索引
表索引——普通索引
表索引——普通索引