SQL优化

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

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

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

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

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

相关推荐
学传打活1 天前
【边打字.边学昆仑正义文化】_21_爱的结晶(1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
数据皮皮侠AI8 天前
顶刊同款!中国地级市风灾风险与损失数据集(2000-2022)|灾害 / 环境 / 经济研究必备
大数据·人工智能·笔记·能源·1024程序员节
Fab1an9 天前
Busqueda——Hack The Box 靶机
linux·服务器·学习·1024程序员节
技术专家9 天前
Stable Diffusion系列的详细讨论 / Detailed Discussion of the Stable Diffusion Series
人工智能·python·算法·推荐算法·1024程序员节
学传打活12 天前
古代汉语是源,现代汉语是流,源与流一脉相承。
微信公众平台·1024程序员节·汉字·中华文化
学传打活17 天前
【边打字.边学昆仑正义文化】_19_星际生命的生存状况(1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
unable code24 天前
[HNCTF 2022 WEEK2]ez_ssrf
网络安全·web·ctf·1024程序员节
unable code25 天前
[NISACTF 2022]easyssrf
网络安全·web·ctf·1024程序员节
unable code1 个月前
BUUCTF-[第二章 web进阶]SSRF Training
网络安全·web·ctf·1024程序员节
开开心心就好1 个月前
进程启动瞬间暂停工具,适合调试多开
linux·运维·安全·pdf·智能音箱·智能手表·1024程序员节