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草图,磨刀不误砍柴工,明确了逻辑之后建表其实很快且高效的。

相关文章
|
2月前
|
SQL 机器学习/深度学习 人工智能
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
本文系统性地阐述了自然语言转SQL(NL2SQL) 技术如何让非技术背景的业务分析师实现数据自助查询,从而提升数据驱动决策的效率与准确性。
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
|
11天前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
138 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
11天前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
11天前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
16天前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
208 4
|
29天前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
95 8
|
2月前
|
SQL 人工智能 Java
用 LangChain4j+Ollama 打造 Text-to-SQL AI Agent,数据库想问就问
本文介绍了如何利用AI技术简化SQL查询操作,让不懂技术的用户也能轻松从数据库中获取信息。通过本地部署PostgreSQL数据库和Ollama模型,结合Java代码,实现将自然语言问题自动转换为SQL查询,并将结果以易懂的方式呈现。整个流程简单直观,适合初学者动手实践,同时也展示了AI在数据查询中的潜力与局限。
199 8
|
2月前
|
SQL 人工智能 Linux
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
135 5
|
16天前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
3月前
|
机器学习/深度学习 SQL 运维
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
104 4