tnblog
首页
视频
资源
登录

MySQL使用适合的列

4237人阅读 2020/5/25 22:45 总访问:4237 评论:0 收藏:0 手机
分类: MySQL

前言:在项目开发中设计的表结构和索引不佳会造成大量的性能、空间资源浪费。

我们要提高性能,需要考虑的因素:
1、设计架构
2、设计索引
3、评估查询性能

在项目开发中数据库的设计很重要,特别列所选的数据类型

  1. 通常越小越小:使用小的数据类型,——更少的磁盘空间,内存和CPU缓存。而且需要的CPU的周期也更少。

   2.简单就好。 --很多“老铁”喜欢花里胡哨,切杀鸡不要用宰牛刀。

  •  整数代价小于字符。——因为字符集和排序规则使字符比较更复杂

   3.尽量避免NULL——如果计划对列进行索引,尽量避免把列设置为NULL

      尽可能把字段定义为NOT NULL。——可以放置一个默认值,如‘’,0,特殊字符串。

    why:

(1)MYSQL难以优化NULL列。NULL列会使索引,索引统计和值更加复杂。
(2)NULL列需要更多的存储空间,还需要在MYSQL内部进行特殊处理。

(3)NULL列加索引,每条记录都需要一个额外的字节,还导致MyISAM中固定大小的索引变成可变大小的索引。


类型选择的一些习惯:

第一步、大致决定数据类型。——判断是数字,字符串还是时间等。这通常很直观。

第二步、确定特定的类型。

很多数据类型能够保存同类型的数据,但是我们要发现,他们在存储的范围,精度和物理空间之间的差别(磁盘或内存空间)。如:datetime和timestamp能保存同样类型的数据:日期和时间。——timestamp使用datetime一半的空间;能保存时区;拥有特殊的自动更新能力。 


整数:

    1.存储类型——数据范围为-2^(n-1)到2^(n-1)-1,这里的n是所需存储空间的位数。

   

 类型名称    占用位数      数据范围  
  TINYINT     8   -2^7 ~ 2^7-1
   SMALLINT     16     -2^15~2^15-1  
   MEDIUMINT       24     -2^23~2^23-1
   INT     32   -2^31~2^23-1
   BIGINT     64    -2^63~2^63-1
    2.unsigned属性表示不允许负数,并大致把正上限提高了一倍。如TINYINT UNSIGNED保存的范围为0到255而不是-127到128

    3.MYSQL对整数类型定义宽度,比如int(1)和int(22)对于存储和计算是一样的。只规定了MYSQL的交互工具(如命令行客户端)用来显示字符的个数。

    



 


评价
有些事情就是那么巧,回头就相遇了。相遇很美
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群交流技术