SQL优化小讲堂(六)——善待数据库从建表开始

简介: 建表相信小伙伴都会,鼠标点击右键建表,输入需要的列和类型,给表命名保存即可。但是你有想过不规范的建表,对数据库会是一种什么样的情况?


1.为什么要规范建表


规范建表有助于厘清表与表之间的关系,列与列之间的联系,可以很好的理解当前库的具体作用。

上面的只是最基本的,深层次的原因是可以有效提高表与表进行关联或者单独查询时候的效率。

一般复杂的逻辑由于表设计的不合理,在进行表关联时候需要关联很多张表,每进行一次关联,数据库就需要消耗一定的时间去寻找匹配项。关联的越多,花的时间就越久。


2.如何规范建表

A.按主题对表进行划分

例如学生主题相关的,在建表的时候可以采用以下方式创建

CREATE TABLE STU.Students

(......)

其中STU就代表一个主题

B.表和列的命名的规范

表名在创建时需要做到见名知意,词汇之间用_隔开,使用驼峰式(首字母大写),且长度不宜超过30个长度。

例如要建立一个学生缴费表,可以采用如下方式:

CREATE TABLE STU.Students_Fee

(......)

这里的表名Students_Fee由词语学生(Students)和费用(Fee)组成,用_进行连接,单词的首字母都进行了大写,由12个字符组成。

C.字段类型统一定义

  • 对于字符串类型,如果长度超过20个长度,一般定义为VARCHAR类型。低于20个的可以考虑使用CHAR类型,可以有效提高查询效率。
  • 中文字段一般用VARCHAR类型,长度视情况而定。
  • 涉及金额以及精度较高的使用DECIMAL(m,n)类型,其中m和n根据实际情况具体来定。不建议使用DOUBLE和FLOAT类型
  • 判断类的可以直接使用INT类型来代替,如0代表否,1代表是
  • 整形定义中不添加长度,比如使用INT,而不是INT(4)
  • 尽可能不要使用IMAGE和TEXT类型
  • 存储时间(精确到秒)建议使用TIMESTAMP类型,因为TIMESTAMP使用4字节,DATETIME使用8个字节
  • 建议字段定义为NOT NULL,有NULL存在的列,可能会让索引失效。

D.尽量满足第三范式

其实第三范式的作用就是为了让表里的字段尽可能少存储几列,减少冗余。但是在实际开发生产中,很多人基本就是看心情建表。有的表可以冗余几列结果没有冗余,有的表需要拆分成几个表却将所有字段放在一个大表中,这是建表大忌。

在不知道如何建表更优的情况下,建议列数不要超过20列。最好能先画一个E-R草图,磨刀不误砍柴工,明确了逻辑之后建表其实很快且高效的。

相关文章
|
24天前
|
SQL 关系型数据库 MySQL
MySQL进阶突击系列(07) 她气鼓鼓递来一条SQL | 怎么看执行计划、SQL怎么优化?
在日常研发工作当中,系统性能优化,从大的方面来看主要涉及基础平台优化、业务系统性能优化、数据库优化。面对数据库优化,除了DBA在集群性能、服务器调优需要投入精力,我们研发需要负责业务SQL执行优化。当业务数据量达到一定规模后,SQL执行效率可能就会出现瓶颈,影响系统业务响应。掌握如何判断SQL执行慢、以及如何分析SQL执行计划、优化SQL的技能,在工作中解决SQL性能问题显得非常关键。
|
1天前
|
关系型数据库 数据库 数据安全/隐私保护
云数据库实战:基于阿里云RDS的Python应用开发与优化
在互联网时代,数据驱动的应用已成为企业竞争力的核心。阿里云RDS为开发者提供稳定高效的数据库托管服务,支持多种数据库引擎,具备自动化管理、高可用性和弹性扩展等优势。本文通过Python应用案例,从零开始搭建基于阿里云RDS的数据库应用,详细演示连接、CRUD操作及性能优化与安全管理实践,帮助读者快速上手并提升应用性能。
|
2天前
|
SQL 关系型数据库 MySQL
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
7 2
|
22天前
|
SQL 存储 关系型数据库
【SQL技术】不同数据库引擎 SQL 优化方案剖析
不同数据库系统(MySQL、PostgreSQL、Doris、Hive)的SQL优化策略。存储引擎特点、SQL执行流程及常见操作(如条件查询、排序、聚合函数)的优化方法。针对各数据库,索引使用、分区裁剪、谓词下推等技术,并提供了具体的SQL示例。通用的SQL调优技巧,如避免使用`COUNT(DISTINCT)`、减少小文件问题、慎重使用`SELECT *`等。通过合理选择和应用这些优化策略,可以显著提升数据库查询性能和系统稳定性。
78 9
|
2月前
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
|
2月前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
59 11
|
2月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
112 6
|
3月前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
103 11
|
2月前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
381 0
|
2月前
|
SQL 分布式计算 Java
Spark SQL向量化执行引擎框架Gluten-Velox在AArch64使能和优化
本文摘自 Arm China的工程师顾煜祺关于“在 Arm 平台上使用 Native 算子库加速 Spark”的分享,主要内容包括以下四个部分: 1.技术背景 2.算子库构成 3.算子操作优化 4.未来工作
101 0

热门文章

最新文章