SQL优化

打印 上一主题 下一主题

主题 866|帖子 866|积分 2598

 

企业业务逻辑数据的递增和用户量的递增会产生大量的数据库数据量过大的问题。数据库的默认索引表都是存在。一个数据库有索引库和data数据库。索引库里面存放着索引表,指向数据存储区。Java适配的MySQL数据库默认提供每张数据记录表的索引表机制。数据库表的数据索引默认是会查找索引表之后再去数据记录表中查找数据。
 
数据库的最左匹配原则默认通过字母表排序匹配查询数据,最左匹配原则是有序查询。数据量过大会产生大量的慢查询语句。专业术语回表查询是对数据记录表的索引返回到数据索引表。大量的数据记录表的慢查询操作会损失数据库数据查询性能。SQL的编写只管使用索引库查询。索引库查询是小表查询操作,耗费的查询数据性能时间较少。索引失效是由like模糊匹配所产生的查询性能问题。like 查询是全表扫描操作,全表扫描关联的数据量过大的时候会产生数据查询时间过长。
 
二叉树索引的增强版本B+树实现对索引的树形布局存储。树形布局存储数据库的索引比线性数组存储性能要好。索引雷同指针,团结索引是索引对象,由很多的索引组合而成。数据库索引表的管理操作非常复杂。索引库索引库的大小不能过大,过大也需要做分布式处理。SQL的编写过程涉及到的子查询不能嵌套太多,子查询会在运行内存中给数据输出对象分配内存空间。嵌套分配内存倒霉于内存空间的开释。
 
表与表之间的关联关系创建通过外键和主表的主键举行关联。关系型数据库的约束过大不太机动。布局化和非布局化的数据库的区别在于对数据的规范化存储。布局化数据存储比较耗费内存,一张数据表是否有数据存在都会有标志存在占用一定内存空间。非布局化的数据库是非关系型数据库,非关系型的数据库使用api操作数据。Memochache和redis都是非关系型的数据库,数据库数据记录存在就会有数据布局分配存储,没有数据的字段并不会布局化存储。
SQL的数据输出数据区只管使用简单的数据。聚集函数在SQL的输出数据区存在会生成数据输出集合,雷同复杂数据对象倒霉于数据的检索。聚集函数输出数据会产生索引失效,需要重新对输出数据创建索引。SQL的条件过滤is null 是不会扫描索引表。节省数据索引表的内存空间。条件or关键字只管少用,也是不会和数据索引表产生关联。数据表的小表雷同索引表,大表雷同数据库记录表。小表带动大表,可以提高数据查询性能。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

千千梦丶琪

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表