MySQL数据库多列索引详解

多列索引是数据库中用于提高查询效率的一种机制,它涉及多个字段。创建多列索引可以在创建表时定义或后期通过CREATEINDEX或ALTERTABLE语句添加。索引的使用依赖于查询条件是否包含第一字段。当查询条件匹配索引的第一列时,多列索引才会生效,否则可能不会被利用。示例展示了如何在MySQL中创建和使用多列索引。
摘要由CSDN通过智能技术生成

多列索引的概念

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

多列索引的创建

创建表时定义索引

语法

CREATE TABLE tablename(
    propname1 type1,
    ……
    propnamen type..n,
    INDEX | KEY [indexname] (propname1 [(length)] [ ASC | DESC ],
                             Propname2 [(length)] [ ASC | DESC ], 
                              ... ...                               
                             Propnamen [(length)] [ ASC | DESC ]) 
);

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


SQL语句示例

create table class(
    id int ,
    name varchar(128) unique ,
    teacher varchar(64),
    index index_mult_columns(id asc,
                             teacher)
);

插入测试数据

insert into class 
values(1,'一班','王老师'),
      (2,'二班','张老师'),
      (3,'三班','李老师');

只有查询条件中使用了所关联字段中的第一个字段,多列索引才会被使用。例如:

select * from class where id>0 and teacher='王老师';

查询结果

如果没有使用第一个字段,则不会启用多列索引。例如:

 

已经创建的表上创建索引

执行create语句

语法

  CREATE  INDEX indexname
    ON tablename( propname1 [(length)] [ ASC | DESC ],  
                   Propname2 [(length)] [ ASC | DESC ],   
                              ... ...                                
                         Propnamen [(length)] [ ASC | DESC ]  ); 

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

create table class(
    id int ,
    name varchar(128) unique ,
    teacher varchar(64)
);
 
create index index_mult_columns 
    on class (id,
              teacher);

执行ALTER TABLE 语句

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

ALTER TABLE tablename
    ADD INDEX|KEY indexname(propname1 [(length)] [ ASC | DESC ],  
                   Propname2 [(length)] [ ASC | DESC ],              
                              ... ...                                          
                         Propnamen [(length)] [ ASC | DESC ]  ); 

SQL语句示例

create table class(
    id int ,
    name varchar(128) unique ,
    teacher varchar(64)
);
 
alter table class 
    add index index_mult_columns(id,
                                 teacher);

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值