专栏首页MYSQL轻松学Mysql索引长度计算

Mysql索引长度计算

(root:hostname:Fri May 29 14:10:50 2015)[liangxl]> show create table liang_2;
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------
| Table   | Create Table                                                                                                                                                
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------
| liang_2 | CREATE TABLE `liang_2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uid` int(11) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL,
  `email` varchar(20) DEFAULT NULL,
  `addr` varchar(20) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `ind_liang_2_name` (`name`(5)),
  KEY `ind_liang_2_email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8 |
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------
1 row in set (0.00 sec)
(root:hostname:Fri May 29 14:10:56 2015)[liangxl]> create index ind_liang_2_addr on liang_2(addr);
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0
(root:hostname:Fri May 29 14:11:13 2015)[liangxl]> explain select * from liang_2 where addr='asdsdadasdads';
+----+-------------+---------+------+------------------+------------------+---------+-------+------+-------------+
| id | select_type | table   | type | possible_keys    | key              | key_len | ref   | rows | Extra       |
+----+-------------+---------+------+------------------+------------------+---------+-------+------+-------------+
|  1 | SIMPLE      | liang_2 | ref  | ind_liang_2_addr | ind_liang_2_addr | 62      | const |    4 | Using where |
+----+-------------+---------+------+------------------+------------------+---------+-------+------+-------------+
1 row in set (0.00 sec)
(root:hostname:Fri May 29 14:11:32 2015)[liangxl]> explain select * from liang_2 where email='asas@ss';     
+----+-------------+---------+------+-------------------+-------------------+---------+-------+------+-------------+
| id | select_type | table   | type | possible_keys     | key               | key_len | ref   | rows | Extra       |
+----+-------------+---------+------+-------------------+-------------------+---------+-------+------+-------------+
|  1 | SIMPLE      | liang_2 | ref  | ind_liang_2_email | ind_liang_2_email | 63      | const |    4 | Using where |
+----+-------------+---------+------+-------------------+-------------------+---------+-------+------+-------------+
1 row in set (0.01 sec)
(root:hostname:Fri May 29 14:11:51 2015)[liangxl]> explain select * from liang_2 where name='aaaab';   
+----+-------------+---------+------+------------------+------------------+---------+-------+------+-------------+
| id | select_type | table   | type | possible_keys    | key              | key_len | ref   | rows | Extra       |
+----+-------------+---------+------+------------------+------------------+---------+-------+------+-------------+
|  1 | SIMPLE      | liang_2 | ref  | ind_liang_2_name | ind_liang_2_name | 18      | const |    1 | Using where |
+----+-------------+---------+------+------------------+------------------+---------+-------+------+-------------+
1 row in set (0.00 sec)
(root:hostname:Fri May 29 14:12:25 2015)[liangxl]> \s;
Server characterset:    utf8
Db     characterset:      utf8
Client characterset:      utf8
Conn.  characterset:    utf8

结论:

1、int:固定占用4个字节

2、不同字符集占用字节数不同:

3、latin1:2个字节

4、utf8:3个字节

5、是否为空占用1个字节,not null不占用字节

6、变长字段需要记录长度占用2个字节

7、索引长度计算公式:varchar(20)*3+1+2=63

本文分享自微信公众号 - MYSQL轻松学(learnmysql),作者:DBHEHE

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-09-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL系列优化(一)

    MYSQL优化是一个非常大的课题,这篇文章主要介绍了跟MYSQL相关的4个方面,如果想深入研究可以查下相关资料。 ---- 一、服务器级别优化 二、操作系统级别...

    MySQL轻松学
  • truncate 引起 system lock 分析

    线程是被mysql_lock_tables()函数调用,并且此后该线程未更新过状态。

    MySQL轻松学
  • ClickHouse分布式高可用集群搭建

    地址:https://packagecloud.io/altinity/clickhouse

    MySQL轻松学
  • 快速学习-以太坊账户简介

    cwl_java
  • FreeRTOS——基本简介

    【背景】:项目应用中需要添加的功能变多,而裸奔程序不足以应对后期产品的发展变化,所以需要在现有软件中加入实时操作系统。而目前在研的该系列产品并非高大上的产品,M...

    Winter_world
  • 【LeetCode日记】84. 柱状图中最大的矩形

    ` 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

    lucifer210
  • Nginx和Apache中配置禁止PHP脚本可执行权限

    今天继续来说一说安全方面的知识,在项目完成开发后,我们要在测试环境测试,生产环境部署等一系列操作。我们以thinkphp5.1版本为例,在5.1版本中使用了单一...

    小白程序猿
  • Nginx和Apache中配置禁止PHP可执行权限

    今天继续来说一说安全方面的知识,在项目完成开发后,我们要在测试环境测试,生产环境部署等一系列操作。我们以thinkphp5.1版本为例,在5.1版本中使用了单一...

    小白程序猿
  • Java微信开发_Exception_03_errcode:48001 errmsg:api unauthorized hint

    异常信息:errcode:48001 errmsg:api unauthorized hint

    shirayner
  • 用Angule Cli创建Angular项目

    Angular4.0来了,更小,更快,改动少 接下来为Angular4.0准备环境和学会使用Angular cli项目 1.环境准备: 1)在开始工作之前我们...

    okaychen

扫码关注云+社区

领取腾讯云代金券