iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mysql表设计需要注意的问题
  • 422
分享到

Mysql表设计需要注意的问题

Mysql表设计需要注意的问题 2015-04-28 20:04:14 422人浏览 才女
摘要

下面探讨的数据库为Mysql 存储引擎为innodb因为这是最常见的,使用最多的数据库和引擎 什么是页分裂? 这是因为聚簇索引采用的是平衡二叉树算法,而且每个节点都保存了该主键所对应行的数据,假设插入数据的主键是自增长的,那么根据二叉树算

Mysql表设计需要注意的问题

下面探讨的数据库Mysql 存储引擎为innodb因为这是最常见的,使用最多的数据库和引擎

什么是页分裂?
这是因为聚簇索引采用的是平衡二叉树算法,而且每个节点都保存了该主键所对应行的数据,假设插入数据的主键是自增长的,那么根据二叉树算法会很快的把该数据添加到某个节点下,而其他的节点不用动;但是如果插入的是不规则的数据,那么每次插入都会改变二叉树之前的数据状态。从而导致了页分裂。

为什么一定要设置一个主键
因为就算你不主动设置一个主键,innodb也会帮你生成一个隐藏列,作为自增主键来使用。所以,不管怎么样都会有自增主键,还不如自己指定一个,主键索引可以提高查询效率。

主键使用自增还是UUID
主键肯定是用自增。innodb种的主键是聚族索引,如果主键是自增的,那么每次插入的新数据都会顺序添加到当前索引节点的后续位置,当一页写满时,就会自动开启第二页,如果不是自增主键,那么就可能在中间插入,就会引发页的分裂,产生很多碎片,总之用自增主键性能更好。

UUID产生的索引文件更大,当数据量超过一百万行时,主键查询性能和索引文件大小都比UUID要更有效率和更小。

 

主键为什么不推荐有业务含义

1)因为任何含有业务的列都有改变的可能性,主键一旦带上业务含义,那么主键就有可能发生改变。主键发生改变,该数据在磁盘上的存储位置就会发生更改,有可能引发页分裂,产生空间碎片。

2)带有业务含义的主键不一定是顺序自增的,就有可能导致后边插入的数据主键一定比前面的大,如果出现后边插入的数据主键比前面插入的小,就肯能引发页分裂,产生空间碎片。
 

表示枚举的字段为什么不用enum类型
首先,枚举在mysql中一般用tinyint类型,为什么不使用enum呢

1)ENUM类型,order by操作效率低,需要额外的操作

2)如果枚举是数值,有陷阱

例如:表结构如下create table test(sex enum("0","1"))此时执行插入语句insert into test values(1) 查询的结果为0

只有这样插入insert into test values("1")此时结果才是1

 

货币字段用什么类型
货币:如果货币单位是分,可以使用int类型,如果坚持用元的话,可以使用Decimal类型,不能使用float和double类型,因为这两个类型是以二进制存储的,所有有一定的误差。

例如:create table "t"("price" float(10,2) default null) engine=innodb default charset=utf8然后插入一条数据price=120.23,然后你会发现数据变为120.25,精度失准。

 

时间字段用什么类型
1)如果使用varchar,优点是显示直观,缺点是做时间比较运算的时候,需要使用str_to_date等函数把它转化为事件类型,你会发现这是无法命中索引的,数据量一大,这就是一个大坑。

2)如果使用timestamp类型,该类型为4个字节,表示的时间范围为1970-01-01 到2038-01-19 也就是说2038年以后的时间不能使用timestamp存储。该类型有一个优势,就是自带时区,如果修改了时区,该字段值会跟着改变。

3)dtatime类型,该类型为8个字节,自己维护一个时间戳,表示范围比timestamp大,因为需要自己维护,所以不太方便。


为什么不直接存储图片、音频、视频等大容量内容
在实际生产中,我们都是在文件服务器上存真实文件,数据库中保存对应的文件路劲即可,Mysql有存放大文件的类型,text和blob类型,但是基本不使用

1)MySQL内存临时表不支持text、blob这样的大数据类型,如果查询中包含这样的数据,在排序等操作时,就不能使用内存临时表,必须使用磁盘临时表,导致效率低下。

2)binlog内容太多,因为数据内容过大,会导致binlog内容较多,而MySQL主从同步靠binlog进行同步,binlog太大就会导致主从同步效率问题。


字段为什么要定义为NOT NULL
1)索引性能不好

2)查询会出现一些不可预料的结果

您可能感兴趣的文档:

--结束END--

本文标题: Mysql表设计需要注意的问题

本文链接: https://www.lsjlt.com/news/6475.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql表设计需要注意的问题
    下面探讨的数据库为MySQL 存储引擎为innodb因为这是最常见的,使用最多的数据库和引擎 什么是页分裂? 这是因为聚簇索引采用的是平衡二叉树算法,而且每个节点都保存了该主键所对应行的数据,假设插入数据的主键是自增长的,那么根据二叉树算...
    99+
    2015-04-28
    Mysql表设计需要注意的问题
  • 网页UI设计需要注意什么问题
    这篇文章主要讲解了“网页UI设计需要注意什么问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“网页UI设计需要注意什么问题”吧!首先:网页的色调选择应该符合主题且独特笔者曾经也自己接手过几个...
    99+
    2023-06-12
  • MySQL中需要注意的字段长度问题
    在MySQL的表结构设计中,突然想起来几个地方碰到的问题比较多,大体来说一个就是字符集,一个就是数据类型。 而字符集和数据类型结合起来,就有一个蛮有意思的细节,那就是行长度的问题。 比如我们...
    99+
    2022-10-18
  • 闪回点需要注意的问题
    sys@newtestCDB> select * from v$recovery_file_dest; NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMAB...
    99+
    2022-10-18
  • mysql建表需要注意什么
    本篇文章和大家了解一下mysql建表需要注意什么。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。一、mysql各个名称库名、表名、字段名全部使用小写字母,用'_'下划线分割...
    99+
    2022-10-18
  • 建设网站时需要注意哪些问题
    本篇文章为大家展示了建设网站时需要注意哪些问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1。网站会自动吸引访问者使您的网站在线只是工作的一半。许多企业主错误地认为,一旦他们的网站上线,他们将自动...
    99+
    2023-06-07
  • Oracle移植到MySQL需要注意哪些问题
    这篇文章主要介绍“Oracle移植到MySQL需要注意哪些问题”,在日常操作中,相信很多人在Oracle移植到MySQL需要注意哪些问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2022-10-19
  • spring中@value注解需要注意的问题
    首先,@value需要参数,这里参数可以是两种形式:@Value("#{configProperties['t1.msgname']}")或者@Value("${t1.msgname}");其次,下面我们来看看如何使用这两形式,在配置上有什...
    99+
    2023-05-31
    spring 注解 ue
  • PostgreSQL有哪些需要注意的问题
    这篇文章主要讲解了“PostgreSQL有哪些需要注意的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL有哪些需要注意的问题”吧!1:...
    99+
    2022-10-18
  • Java需要注意的问题有哪些
    这篇文章主要介绍了Java需要注意的问题有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Top 1:"abc"=="abc"返回的...
    99+
    2023-06-17
  • MySQL处理空值时需要注意的两个问题
    本篇内容介绍了“MySQL处理空值时需要注意的两个问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MyS...
    99+
    2022-10-18
  • win7系统设置虚拟内存需要注意的问题
    系统的虚拟内存很多时候可以相当于内存使用,但是别神话它,它和内存差别还是非常大的,特别是对于那么有3.4G内存的电脑,你虚拟内存完成可以设置为非常小,因为已经没什么用了,而对于1G一下内存的电脑用处会比较大的。下面我们来...
    99+
    2023-06-01
    win7 虚拟内存 问题 系统
  • mint-ui loadmore组件需要注意的问题
    小编给大家分享一下mint-ui loadmore组件需要注意的问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!如下所示:loadTop(){   this.$sto...
    99+
    2022-10-19
  • Oracle remap_schema需要注意的问题有哪些
    这篇文章主要介绍“Oracle remap_schema需要注意的问题有哪些”,在日常操作中,相信很多人在Oracle remap_schema需要注意的问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出...
    99+
    2022-10-18
  • 在建设url时到底需要注意什么问题
    小编给大家分享一下在建设url时到底需要注意什么问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  首先,很多网站出现最多的情况就是网站url的地址不规范,可能...
    99+
    2023-06-10
  • 建设企业网站时需要注意哪些问题
    这期内容当中小编将会给大家带来有关建设企业网站时需要注意哪些问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。要点一:广泛适应广泛适应主要是指网站能不能在不同移动设备上正常运行,能不能根据屏幕方向来调整显...
    99+
    2023-06-07
  • Python 科学计算精度需要注意的问
    对于金融方面的计算和分析,往往会忽略科学计算方面精度控制的问题。该问题针对于 Python2 & Python3 这里我们来看一个问题: num=0.0 for i in range(10): ...
    99+
    2023-01-31
    需要注意 精度 科学
  • 建设营销型网站时需要注意哪些问题
    这篇文章将为大家详细讲解有关建设营销型网站时需要注意哪些问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、营销型网站要重视产品介绍和展示作为营销型网站,其最重要的一个特点就是能够较好的进...
    99+
    2023-06-07
  • 企业在网站建设时需要注意哪些问题
    本篇内容主要讲解“企业在网站建设时需要注意哪些问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“企业在网站建设时需要注意哪些问题”吧!  互联网平台已经成为企业推广的重要平台,适应客户碎片化时间...
    99+
    2023-06-10
  • pythonnp.arange步长0.1的问题需要特别注意
    目录np.arange 步长0.1问题1)count输出什么?2)count输出是什么?python步长的使用np.arange 步长0.1问题 两个小测试: 1)count输出什么...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作