SQL优化

企业业务逻辑数据的递增和用户量的递增会产生大量的数据库数据量过大的问题。数据库的默认索引表都是存在。一个数据库有索引库和data数据库。索引库里面存放着索引表,指向数据存储区。Java适配的MySQL数据库默认提供每张数据记录表的索引表机制。数据库表的数据索引默认是会查找索引表之后再去数据记录表中查找数据。

数据库的最左匹配原则默认通过字母表排序匹配查询数据,最左匹配原则是有序查询。数据量过大会产生大量的慢查询语句。专业术语回表查询是对数据记录表的索引返回到数据索引表。大量的数据记录表的慢查询操作会损失数据库数据查询性能。SQL的编写尽量使用索引库查询。索引库查询是小表查询操作,耗费的查询数据性能时间较少。索引失效是由like模糊匹配所产生的查询性能问题。like 查询是全表扫描操作,全表扫描关联的数据量过大的时候会产生数据查询时间过长。

二叉树索引的增强版本B+树实现对索引的树形结构存储。树形结构存储数据库的索引比线性数组存储性能要好。索引类似指针,联合索引是索引对象,由很多的索引组合而成。数据库索引表的管理操作十分复杂。索引库索引库的大小不能过大,过大也需要做分布式处理。SQL的编写过程涉及到的子查询不能嵌套太多,子查询会在运行内存中给数据输出对象分配内存空间。嵌套分配内存不利于内存空间的释放。

表与表之间的关联关系建立通过外键和主表的主键进行关联。关系型数据库的约束过大不太灵活。结构化和非结构化的数据库的区别在于对数据的规范化存储。结构化数据存储比较耗费内存,一张数据表是否有数据存在都会有标记存在占用一定内存空间。非结构化的数据库是非关系型数据库,非关系型的数据库使用api操作数据。Memochache和redis都是非关系型的数据库,数据库数据记录存在就会有数据结构分配存储,没有数据的字段并不会结构化存储。

SQL的数据输出数据区尽量使用简单的数据。聚集函数在SQL的输出数据区存在会生成数据输出集合,类似复杂数据对象不利于数据的检索。聚集函数输出数据会产生索引失效,需要重新对输出数据建立索引。SQL的条件过滤is null 是不会扫描索引表。节省数据索引表的内存空间。条件or关键字尽量少用,也是不会和数据索引表产生关联。数据表的小表类似索引表,大表类似数据库记录表。小表带动大表,可以提高数据查询性能。

相关推荐
小坏讲微服务12 小时前
MaxWell中基本使用原理 完整使用 (第一章)
大数据·数据库·hadoop·sqoop·1024程序员节·maxwell
liu****1 天前
18.HTTP协议(一)
linux·网络·网络协议·http·udp·1024程序员节
洛_尘1 天前
JAVA EE初阶 6: 网络编程套接字
网络·1024程序员节
2301_800256112 天前
关系数据库小测练习笔记(1)
1024程序员节
金融小师妹2 天前
基于多源政策信号解析与量化因子的“12月降息预期降温”重构及黄金敏感性分析
人工智能·深度学习·1024程序员节
GIS数据转换器2 天前
基于GIS的智慧旅游调度指挥平台
运维·人工智能·物联网·无人机·旅游·1024程序员节
南方的狮子先生3 天前
【C++】C++文件读写
java·开发语言·数据结构·c++·算法·1024程序员节
Neil今天也要学习3 天前
永磁同步电机无速度算法--基于三阶LESO的反电动势观测器
算法·1024程序员节
开开心心_Every3 天前
专业视频修复软件,简单操作效果好
学习·elasticsearch·pdf·excel·音视频·memcache·1024程序员节
liu****4 天前
16.udp_socket(三)
linux·开发语言·数据结构·c++·1024程序员节