传统关系型数据库查询性能提高思路

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 传统关系型数据库查询性能提高思路

相信现阶段依然有许多的企业信息化项目依然采用单体架构,其数据存储主要方式依然以关系型数据库为主,比如oracle、mysql、postgresql等。企业初期,各种原因导致研发人员身兼数职,都是全栈的角色。当然从业务上来说,用户量不大,并发数小,只要实现需求功能就可以了。当系统运行到一定数量级,一定会面临数据库的查询问题。下文从数据库设计和查询简单说说怎么提高查询性能。


一、数据库设计


1、使用范式设计合理设计数据库,为了考虑性能,可不用实现全部范式。在实践中使用第一和第二范式即可(具体范式规则可问度娘)。


2、表字段使用合理的数据类型,尽量不用blob、clob、text等大字段,如必须使用,可增加扩展表,从需求上,这些大字段在列表查询时不用展示,在展示详情时再发起查询即可。对于图片和视频等,只保存路径信息,实际文件保存在文件系统中。


3、在条件查询字段增加索引,索引是传统模式下,性能提升的利器。在不增加任何硬件的前提下,索引可以大大的提高应用查询效率。


4、数据库端不做任何外键,在应用端负责外键引用。这里需要注意的是,有A(id),B(id,aid),设计这种表的时候一定要注意关联字段的数据类型必须要一致。A表中id字段是int8,那么B表中aid字段就必须设置为int8,而不能用varchar字段。


二、查询优化


1、使用exists替代in。


开发人员由于不考虑数据查询效率,使用exists可以使用表索引,从而提升效率。当前前提是exists的结果集是一个大结果集。如果目标结果集只是几十条数据,使用in也是可以的。


2、尽量少用子查询。


子查询的性能很低,建议使用表连接的方式来优化。


3、优化or查询。


实际开发中or查询常见,可以通过union中改变or为两条and语句来提高查询效率。


4、不滥用多字段like。


业务方喜欢在前端页面使用一个输入框实现多字段检索。实现方式通常是多字段or加like。这里推荐一种改善方案,在前端把查询字段明确化,去掉一个输入框接收查询参数。如果有技术力量,可以加上搜索引擎,则可以解决这个需求。

三、应用程序优化

1、在应用程序中采用合理的数据结构来存储相应的查询结果数据。


2、在业务逻辑层中尽量加快运算,较少不必要的时间消耗,比如多次进行集合的遍历。


以上从数据库设计和查询两个方面简单阐述了如何提升查询性能。查询优化是一个研发团队的核心竞争力,在初创阶段,业务为王,技术是辅助性的。但是,技术也需要紧紧贴合业务,避免由于技术债务导致业务不能快速发展。应用性能提升之道任重而道远,欢迎交流。


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
18天前
|
存储 关系型数据库 MySQL
客户说|乐檬零售引入PolarDB:查询性能百倍提升,稳定支撑超10万家门店
客户说|乐檬零售引入PolarDB:查询性能百倍提升,稳定支撑超10万家门店
客户说|乐檬零售引入PolarDB:查询性能百倍提升,稳定支撑超10万家门店
|
19天前
|
Cloud Native 关系型数据库 分布式数据库
世界第一!阿里云PolarDB刷新全球数据库性能及性价比记录
世界第一!阿里云PolarDB刷新全球数据库性能及性价比记录
|
1月前
|
SQL 关系型数据库 分布式数据库
利用 PolarDB PG 版向量化引擎,加速复杂 SQL 查询!完成任务领发财新年抱枕!
利用 PolarDB PG 版向量化引擎,加速复杂 SQL 查询!完成任务领发财新年抱枕!
|
22天前
|
数据库
【YashanDB 知识库】误配置 SYSTEM 级别的 STATISTICS_LEVEL 参数为 ALL 导致数据库性能下降
**标题:误配置 SYSTEM 级别的 STATISTICS_LEVEL 参数为 ALL 导致数据库性能下降** **简介:** 数据库性能骤降至正常水平的百分之一,主要表现为大量 free buffer wait 等待事件。原因是系统级别 STATISTICS_LEVEL 被误设为 ALL。解决方法是将其恢复为默认值 TYPICAL,执行命令:`ALTER SYSTEM SET statistics_level='TYPICAL' SCOPE=BOTH;` 以恢复正常性能。
|
21天前
|
Cloud Native 关系型数据库 分布式数据库
刷新世界纪录!阿里云登顶全球数据库性能及性价比排行榜
阿里云PolarDB云原生数据库在TPC-C测试中登顶全球性能及性价比排行榜。此次突破展示了PolarDB在单核性能、横向扩展及软硬件结合上的创新,标志着中国基础软件的重大成就。
|
4天前
|
数据库
|
19天前
|
Cloud Native 关系型数据库 分布式数据库
世界第一!阿里云PolarDB刷新全球数据库性能及性价比记录
世界第一!阿里云PolarDB刷新全球数据库性能及性价比记录
|
21天前
|
Cloud Native 关系型数据库 分布式数据库
世界第一!阿里云PolarDB登顶全球数据库性能及性价比排行榜!
2月26日,阿里云PolarDB在2025开发者大会上登顶全球数据库性能及性价比排行榜。此次突破标志着中国基础软件取得里程碑成就,PolarDB凭借创新的云原生架构,成功应对全球最大规模并发交易峰值,在性能、可扩展性等方面领先全球。
|
23天前
|
存储 人工智能 监控
时序数据库 TDengine 化工新签约:存储降本一半,查询提速十倍
化工行业在数字化转型过程中面临数据接入复杂、实时性要求高、系统集成难度大等诸多挑战。福州力川数码科技有限公司科技依托深厚的行业积累,精准聚焦行业痛点,并携手 TDengine 提供高效解决方案。
37 0
|
2月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
173 6

热门文章

最新文章