我的编程空间,编程开发者的网络收藏夹
学习永远不晚

[MySQL] mysql索引的长度计算和联合索引

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

[MySQL] mysql索引的长度计算和联合索引

[MySQL] mysql索引的长度计算和联合索引

所有的索引字段,如果没有设置not null,则需要加一个字节。
2.定长字段,int占4个字节、date占3个字节、char(n)占n个字符。
3.变长字段,varchar(n),则有n个字符+两个字节。
4.不同的字符集,一个字符占用的字节数不同。latin1编码的,一个字符占用1个字节,gbk编码的,一个字符占用2个字节,utf8编码的,一个字符占用3个字节。 utf8mb4是一个字符占4个字节
5.使用explain语句查询到的key_len字段,可以适用于上面的计算规则,可以看到查询是否使用到了联合索引
6.mysql优化器会对条件中的 and的前后顺序根据多列索引顺序自动纠正过来

通过索引的长度查看下面sql语句是否使用到了索引
CREATE TABLE `index_test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL DEFAULT "",
`gid` int(11) NOT NULL DEFAULT "0",
`age` int(11) NOT NULL DEFAULT "0",
`score` int(10) unsigned NOT NULL DEFAULT "0",
PRIMARY KEY (`id`),
KEY `name_gid_age_index` (`name`,`gid`,`age`),
KEY `score_index` (`score`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
insert into index_test values(null,"taoshihan",2,1,0);
insert into index_test values(null,"taoshihan",2,2,0);
insert into index_test values(null,"taoshihan",2,3,0);

explain select * from index_test where name="taoshihan" group by gid;
+----+-------------+------------+------------+-------+--------------------+--------------------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+------------+------------+-------+--------------------+--------------------+---------+------+------+----------+-------------+
| 1 | SIMPLE | index_test | NULL | index | name_gid_age_index | name_gid_age_index | 310 | NULL | 6 | 66.67 | Using where |
+----+-------------+------------+------------+-------+--------------------+--------------------+---------+------+------+----------+-------------+

key_len的长度是310,也就是100*3+2 + 4 +4

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

[MySQL] mysql索引的长度计算和联合索引

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

[MySQL] mysql索引的长度计算和联合索引

1.所有的索引字段,如果没有设置not null,则需要加一个字节。2.定长字段,int占4个字节、date占3个字节、char(n)占n个字符。3.变长字段,varchar(n),则有n个字符+两个字节。4.不同的字符集,一个字符占用的字节数不同。latin
[MySQL] mysql索引的长度计算和联合索引
2021-12-22

MySQL 独立索引和联合索引的选择

通常会对多列索引缺乏理解,常见的错误是将很多列设置独立索引,或者是索引列使用错误的次序。我们在下一篇讨论索引列次序的问题,首先看一下多列独立索引的情况,以下面的表结构为例:CREATE TABLE test (c1 INT,c2 INT,c
2022-06-01

mysql的联合索引(复合索引)的实现

联合索引 本文中联合索引的定义为(MySQL):ALTER TABLE `table_name` ADD INDEX (`col1`,`col2`,`col3`);联合索引的优点 若多个一条SQL,需要多个用到两个条件SELECT * FR
2022-05-29

MYSQL联合唯一索引

https://blog.csdn.net/weistin/article/details/79698996
MYSQL联合唯一索引
2019-08-28

MYSQL创建联合索引

在创建表的时候即指定联合索引,例如 -- 如果存在表,则删除DROP TABLE IF EXISTS core_fund_shares -- 创建表CREATE TABLE `core_fund_shares` ( `fund_code`
2023-08-30

MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引是什么

今天小编给大家分享一下MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下
2023-04-21

MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引详细介绍

目录一、索引类型二、聚簇索引和非聚簇索引三、覆盖索引四、联合索引最左前缀匹配原则索引下推五、唯一索引一、索引类型索引根据底层实现可分为B-Tree索引和哈希索引,大部分时候我们使用的都是B-Tree索引,因为它良好的性能和特性更适合于构建
2023-04-19

mysql中聚集索引、辅助索引、覆盖索引、联合索引怎么用

这篇文章主要介绍了mysql中聚集索引、辅助索引、覆盖索引、联合索引怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。聚集索引(Clustered Index)聚集索引就是
2023-06-29

编程热搜

目录