[MySQL] mysql索引的长度计算和联合索引「建议收藏」

[MySQL] mysql索引的长度计算和联合索引「建议收藏」1.所有的索引字段,如果没有设置not null,则需要加一个字节。2.定长字段,int占4个字节、date占3个字节、char(n)占n个字符。3.变长字段,varchar(n),则有n个字符+两个

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

1.所有的索引字段,如果没有设置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

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

(0)
上一篇 2023-01-27
下一篇 2023-01-27

相关推荐

  • python中的一段习题(python第一章课后题答案)

    python中的一段习题(python第一章课后题答案)1:

    2023-11-02
    151
  • 命令行中优雅地使用Python解析数据

    命令行中优雅地使用Python解析数据在数据科学和分析中,大部分的工作都需要分析和处理大量的数据。这意味着我们需要一种快速、可靠和高效的方法来处理数据和分析结果。Python是一种非常适合处理数据和解析结果的高级编程语言,而命令行则是一种非常快速和高效的交互式方式,可以加速数据处理的过程。

    2024-04-01
    57
  • sql server 定时备份_windows10程序在哪

    sql server 定时备份_windows10程序在哪引言 在使用SqlServer Express 版本的时候发现,这个版本不支持通过数据库的代理方式进行数据库的维护。 解决方案 使用SQL语句加windows任务计划的方式解决 具体步骤如下 创建备份

    2023-05-04
    153
  • 远程链接 vps群控[亲测有效]

    远程链接 vps群控[亲测有效]远程链接 vps群控远程桌面是微软公司为了便于网络管理员管理维护服务器推出的一项服务。从windows 2000 server版本开始引入,网络管理员时候远程桌面连接器连接到网络任意一台开启了远程桌…

    2023-02-24
    139
  • 多源数据融合技术_共建生态智领未来

    多源数据融合技术_共建生态智领未来TIS整合ChunJun实操 B站视频: https://www.bilibili.com/video/BV1QM411z7w5/?spm_id_from=333.999.0.0 一、ChunJun

    2023-06-18
    150
  • Python中的字典:储存、查找和操作数据的利器

    Python中的字典:储存、查找和操作数据的利器在Python编程中,字典是一种非常有用的数据结构。字典可以储存大量的数据,以键值对的形式进行存储,并且可以快速地进行数据的查找和操作。在这篇文章中,我们将会从多个方面来详细介绍Python中的字典。

    2024-03-17
    73
  • Python中定义一个圆的用语

    Python中定义一个圆的用语在Python中,有一些基本的数学概念需要了解。首先,圆是一个几何图形,它由一组点构成,这些点与一个特定的点(圆心)之间的距离相等。半径是连接圆心和圆上的任何一个点的线段的长度。直径是连接圆上任意两点的线段的长度,其等于半径的两倍。周长是圆的周长,即圆周上的点到圆心的距离之和。

    2023-12-07
    112
  • Ubuntu卸载Python

    Ubuntu卸载PythonPython语言的应用日益广泛,越来越多的应用开始依赖于Python。但是,有些Ubuntu用户可能需要卸载Python,可能是为了节省磁盘空间或是为了避免Python版本冲突。本文将会介绍如何在Ubuntu上卸载Python,希望能够为读者提供有用的信息。

    2024-05-01
    59

发表回复

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