mysql前缀索引语句_mysql 前缀索引

mysql前缀索引语句_mysql 前缀索引联合索引概念联合索引又叫复合索引,即一个覆盖表中两列或者以上的索引,例如:index_name(columna,columnb)1创建方式执行altertable语句时创建altertabletable_nameaddindexindex_name(column_list)1index_name是创建的联合索引的名字,可以没有,没有的话系统会根据该索引包含的第一列来赋名称;tabl…

大家好,又见面了,我是你们的朋友全栈君。

联合索引

概念

联合索引又叫复合索引,即一个覆盖表中两列或者以上的索引,例如:

index_name(column a,column b)

1

创建方式

执行alter table语句时创建

alter table table_name add index index_name(column_list)

1

index_name是创建的联合索引的名字,可以没有,没有的话系统会根据该索引包含的第一列来赋名称;table_name是要创建该索引的表名;column_list为该索引所包含的表的字段名。

执行create index语句时创建

create index index_name on table_name(column_list)

1

此种情况是在表已经创建好的情况下,再来创建复合索引。index_name和column_list同上;table_name是要创建索引的表名。

例子

create table stu

(

id int,

name varchar(10),

age int,

primary key(id)

);

ALTER TABLE stu ADD INDEX LianHeIndex (name,age);

或者

create index LianHeIndex on stu(name,age);

1

2

3

4

5

6

7

8

9

10

执行上面的语句后在表stu中就创建好了一个名叫LianHeIndex联合索引,在使用联合索引的时候,我们遵守一个最左原则,即INDEX LianHeIndex (name,age)支持name|name age组合查询,而不支持age查询;换句话说,在执行

select * from stu where name=?

1

或者

select * from stu where name=? and age=?

1

时联合索引才会有效,如果执行

select * from stu where age=?

1

则联合索引不会生效。

如果我们是在name和age上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效率,但是如果在name、age两列上创建复合索引的话将带来更高的效率。如果我们创建了(name, age)的复合索引,那么其实相当于创建了(name)、(name,age)两个索引,这被称为最佳左前缀特性。

因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。

注意事项

只要列中包含有NULL值都将不会被包含在索引中

复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的,所以我们在数据库设计时尽可能不要让字段的默认值为NULL。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142246.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • apache 负载均衡策略_负载均衡slb

    apache 负载均衡策略_负载均衡slb参考文章:http://www.2cto.com/os/201109/102368.html在观看本文章之前,请先观看apache负载均衡之配置:http://blog.csdn.net/a787031584/article/details/64907389apache负载均衡策略有三种:第一种:轮询策略:即根据http请求数(requests)来均衡的分配给所代理的服

    2025年10月10日
    3
  • c语言sigaction,c语言信号处理sigaction[通俗易懂]

    c语言sigaction,c语言信号处理sigaction[通俗易懂]c语言信号处理sigaction(2011-04-1823:45:19)标签:c语言信号处理sigactionsighupit分类:c信号安装函数sigaction(intsignum,conststructsigaction*act,structsigaction*oldact)的第二个参数是一个指向sigaction结构的指针(结构体名称与函数名一样,千万别弄混淆了)。在结构sig…

    2022年5月26日
    31
  • BroadcastReceiver详解以及应用[通俗易懂]

    使用Android手机的时候,我们的手机管家中经常会出现开机自启动某某app,那么对于这个某某APP来说,他是怎么知道系统什么时候开机的呢?还有,系统短信怎么知道收到了短信?以及屏幕点亮与关闭、应用卸载与安装等等。这就讲到了Android四大组件之一:BroadcastReceiver,翻译是广播接收者。意思就是接收广播用的。他可以接收到系统开机完成的广播,以及系统电量不足的广播,以及系统收到短信的

    2022年4月18日
    54
  • Bdsyn百度手机助手是何物,它是怎样神不知鬼不觉地安装到你的电脑里的?

    Bdsyn百度手机助手是何物,它是怎样神不知鬼不觉地安装到你的电脑里的?

    2021年12月9日
    86
  • 微生物组-宏基因组分析第8期 (报名直播课免费参加线下课2020.7,最后一周)

    微生物组-宏基因组分析第8期 (报名直播课免费参加线下课2020.7,最后一周)“福利公告:为了响应学员的学习需求,经过易生信培训团队的讨论筹备,现决定安排扩增子16S分析、宏基因组、Python课程和转录组的线上直播课。报名参加线上直播课的老师可在1年内选择参加同…

    2022年6月10日
    30
  • 唯一索引和普通索引的区别

    唯一索引和普通索引的区别一、背景介绍索引用来快速地寻找那些具有特定值的记录,如果没有索引,执行查询时Mysql必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录,表里面的记录数量越多,这个操作的代价就越高,如果作为搜索条件的列上已经创建了索引,mysql无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有一千个记录,通过索引查找记录至少要比顺序扫描记录快100倍。所以对于现在的各种大型数据库来说,索…

    2022年9月19日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号