码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • mysql性能优化之数据类型(持续更新)


        总结一下常用的数据类型创建的注意事项,后期会持续更新。
    1.对于主键id使用bigint还是int?
    2.创建表字段时,选择null还是not null?
    3.IP地址使用varchar数据类型存放?

    1.对于主键id使用bigint还是int?

        mysql中最常见的需求是创建表时将主键id设置为自增,那问题来了,使用bigint好还是int好呢。如果单纯从磁盘占用空间大小角度来讲,使用int要优于bigint。因为bigint为8字节,int为4字节。对于无符号型的int类型来讲,int能表示的最大范围可以到2^32大概是43亿,一般的业务场景中,单表的数据量一般是在千万级别,所以对于大部分的业务场景来讲,43亿算是够用了。另外在来讲磁盘存储空间问题,8字节要比4字节占用空间更大,就好比是房间里面放一升水,本来用2L的水桶就可以,但是用4L的水桶去盛放势必占用的空间更大,毕竟房间大小是一定的,磁盘空间同理。

    2.创建表字段时,选择null还是not null?

        先看官方文档关于null的介绍:

    NULL columns require additional space in the rowto record whether their values are NULL. For MyISAM tables, each NULL columntakes one bit extra, rounded up to the nearest byte.
    
    • 1

    翻译:
        NULL列在行中需要额外的空间以记录其值是否为NULL。 对于MyISAM表,每个NULL列都多花一位,四舍五入到最接近的字节。可以简单理解为别用null。
        另外字段中如果存在null,可能会导致统计查询出现数据不准确、运算异常问题,具体说明可以参考:
    mysql中null引发的错误案例说明以及处理方案
    所以在创建表字段时,没有特殊要求还是老老实实使用not null。

    3.IP地址使用varchar数据类型存放?

        IP地址格式:IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。也就是说使用varchar数据类型存放时,最长15位就可以满足。对应字节数应该需要占用16个字节(varchar需要使用1或2个额外字节记录字符串的长度:如果列的最大长度小于或等于255字节,则只使用1个字节表示,否则使用2个字节。一个varchar(10)的列需要11个字节的存储空间。varchar(1000)的列则需要1002个字节,因为需要2个字节存储长度信息)。
        在实际存储时可以使用int进行存储ip地址对应的数值(通过INET_ATON函数转化),获取ip地址的时候使用INET_NTOA函数(ip地址数值类型转化为字符串)。使用int存储仅占用4字节,相对于字符串能节省3/4的磁盘空间。ip地址数据类型转化如下:

    SET @ip='127.0.0.2';
    SELECT @ip,INET_ATON(@ip) str_to_i,INET_NTOA(INET_ATON(@ip)) i_to_str;
    
    • 1
    • 2

    执行结果:
    在这里插入图片描述

  • 相关阅读:
    统信UOS通过源码安装软件提示“configure: error: cannot run C compiled programs.”错误
    Dom Based XSS
    从GPT入门,到R语言基础与作图、回归模型分析、混合效应模型、多元统计分析及结构方程模型、Meta分析、随机森林模型及贝叶斯回归分析综合应用等专题及实战案例
    SpringSecurity基本使用,结合Mybatis访问数据库
    HelpLook AI 升级!一键生成SEO设置关键要素
    【C++系列P3】‘类与对象‘-三部曲——[基础知识](1/3)
    Rabin Karp 算法详解及Python实现
    新库上线 | CnOpenData农产品批发价格数据
    JS的this关键字详解
    区块链媒体:Web3.0突破7个爆款推广策略解析-华媒舍
  • 原文地址:https://blog.csdn.net/weixin_43401380/article/details/126375733
  • 最新文章
  • RedNb.Nacos 2.0.0 正式发布:.NET 接入 Nacos 3.2.4,AI Registry 全能力落地
    从系统服务到桌面应用:DeepSeek Harness 部署与多形态使用指南
    并发编程(零):并发问题与讨论范围
    理解Oracle Property Graph:以账户转账示例完成图特性最小测试
    Rust 成为微软一线语言之后:谈谈 C# 与 Rust 的互补性
    重建 AI 认知第 6 篇:RAG——答案不在"检索 + 生成"这四个字里
    20260911-Etherfi AtomicQueue 攻击事件:订单校验逻辑未实现,用户授权被滥用
    STM32 中的嵌套向量中断控制器(NVIC)详解
    基于 HuggingFace Tokenizers 训练自定义分词器
    APEX 无法分配 SH 用户?一个存储过程轻松解决
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号