MySQL 中 Varchar(50) 和 varchar(500) 有什么区别?

2024年 7月 25日 29.3k 0

将 "数据与人" 设为 "星标⭐"
第一时间收到文章更新MySQL 中 Varchar(50) 和 varchar(500) 有什么区别?-1MySQL 中 Varchar(50) 和 varchar(500) 有什么区别?-2

问题

我们在设计表结构的时候,设计规范里面有一条如下规则:对于可变长度的字段,在满足条件的前提下,尽可能使用较短的变长字段长度。
为什么这么规定,主要基于两个方面

  • 基于存储空间的考虑

  • 基于性能的考虑

网上说Varchar(50)和varchar(500)存储空间上是一样的,真的是这样吗?基于性能考虑,是因为过长的字段会影响到查询性能?
本文我将带着这两个问题探讨验证一下:

验证存储空间的区别

1、准备两张表

    CREATE TABLE `category_info_varchar_50` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    `name` varchar(50) NOT NULL COMMENT '分类名称',
    `is_show` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否展示:0 禁用,1启用',
    `sort` int(11) NOT NULL DEFAULT '0' COMMENT '序号',
    `deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
    `create_time` datetime NOT NULL COMMENT '创建时间',
    `update_time` datetime NOT NULL COMMENT '更新时间',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_name` (`name`) USING BTREE COMMENT '名称索引'
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分类';




    CREATE TABLE `category_info_varchar_500` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    `name` varchar(500) NOT NULL COMMENT '分类名称',
    `is_show` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否展示:0 禁用,1启用',
    `sort` int(11) NOT NULL DEFAULT '0' COMMENT '序号',
    `deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
    `create_time` datetime NOT NULL COMMENT '创建时间',
    `update_time` datetime NOT NULL COMMENT '更新时间',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_name` (`name`) USING BTREE COMMENT '名称索引'
    ) ENGINE=InnoDB AUTO_INCREMENT=288135 DEFAULT CHARSET=utf8mb4 COMMENT='分类';

    2、准备数据

    给每张表插入相同的数据,为了凸显不同,插入100万条数据

      DELIMITER $$
      CREATE PROCEDURE batchInsertData(IN total INT)
      BEGIN
      DECLARE start_idx INT DEFAULT 1;
      DECLARE end_idx INT;
      DECLARE batch_size INT DEFAULT 500;
      DECLARE insert_values TEXT;

      SET end_idx = LEAST(total, start_idx + batch_size - 1);


      WHILE start_idx

      相关文章

      Oracle如何使用授予和撤销权限的语法和示例
      Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
      下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
      社区版oceanbase安装
      Oracle 导出CSV工具-sqluldr2
      ETL数据集成丨快速将MySQL数据迁移至Doris数据库

      发布评论