MySQL数据库系列之数据库设计原则

MySQL中数据库设计原则:

1.一般情况下,应该尽量使用可以正确存储数据的最小数据类型。数据类型不一样,存储的执行效率也不一样。最好使用适度的整型数据类型,例如int之类的数据,这样在做查询或者字段排序的时候速度是最快的。

2.尽量避免NULL值的时候,因为这样会增加数据库处理的开销。但是也要考虑实际情况,不要一味的为了避免空值而全部设置为not null,具体的设置情况要根据项目的具体业务来。

3.注意char和varchar的使用,char适合存储的大小基本固定在一个范围之内,经常发生变动的数据。而varchar则不一样,varchar适合那种大小不固定,并未经常发生改动的数据。需要注意的是varchar定义的长度最好可以刚好够用,不然会照成资源的浪费,影响整体数据库的性能和存储空间。

4.能用整数标示,最好利用整数标示,因为这样开销最小,效率也是最高的。

5.一个表字段要限制在一定范围之内,不要太长,不然在查询的时候会付出很大的代价,最好分成常用的和非常用的字段。

6.在设计表和设计查询语言的时候就要主要尽量避免大规模的关联查询,因为这样会严重影响数据库的查询效率。

7.在设计数据库的时候要根据具体的业务设计出合理的数据库表和字段。不仅要考虑范式,也要考虑反范式。在不影响数据安全和数据冗余的情况下,可以适当的考虑混合范式的设计。

8.使用缓存表和汇总表能表进行数据库的查询优化。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jed的技术阶梯

Kafka 新版消费者 API(一):订阅主题

说明:这两个参数分别指定了 TCP socket 接收和发送数据包的缓冲区大小。如果它们被设为 -1,就使用操作系统的默认值。如果生产者或消费者与 broker...

2832
来自专栏Leetcode名企之路

求求你别问我一致性hash了

首先,只有存储型的组件,我们才会使用一致性hash;计算型的服务增删节点对整个任务一般没影响,所以负载均衡直接用random就可以。那么像redis、memca...

823
来自专栏CDA数据分析师

读书 | Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =。这三章主要讲Spark的运行过程...

1916
来自专栏闻道于事

Java之线程,常用方法,线程同步,死锁

1, 线程的概念 进程与线程 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。(进程是资源分配的最...

3069
来自专栏coder修行路

python爬虫番外篇(一)进程,线程的初步了解

整理这番外篇的原因是希望能够让爬虫的朋友更加理解这块内容,因为爬虫爬取数据可能很简单,但是如何高效持久的爬,利用进程,线程,以及异步IO,其实很多人和我一样,故...

1916
来自专栏蓝天

Zookeeper C++编程实战之配置更新

CZookeeperHelper: https://github.com/eyjian/libmooon/blob/master/include...

443
来自专栏码洞

求不更学不动之Redis5.0新特性Stream尝鲜

Redis5.0最近被作者突然放出来了,增加了很多新的特色功能。而Redis5.0最大的新特性就是多出了一个数据结构Stream,它是一个新的强大的支持多播的可...

1142
来自专栏LanceToBigData

Java多线程(一)

多线程在面试中经常会被问到,所以也是非常重要的知识。 看到一篇写的很不错的博客:http://www.cnblogs.com/GarfieldEr007/p/5...

1828
来自专栏算法channel

基础|进程和线程模型

计算机中最重要的模型之一,莫过于进程模型和线程模型了,对于它们的深刻理解,直接关系到软件开发,算法设计等计算机细分方向。 01 — 进程模型 进程是指一个具有一...

3475
来自专栏专注数据中心高性能网络技术研发

[Effective Modern C++(11&14)]Chapter 7: The Concurrency API

1965

扫码关注云+社区