SQL优化思路整理
admin
2024-01-20 09:32:05
0

说明:本文章建立在有一定的数据库基础,只说明sql的优化思路,具体问题细节大家可以去网上找找资料。

个人思路sql的优化分三个方面:

1.程序员经验不足,sql写的太烂,这里就不多说了

2.表设计的缺陷,或者是二次开发增强了一些业务造成的join太多【这是无法避免的,但是设计库表的同时尽量向三范式靠拢,它能最大限度的合理处理数据,当然死死的遵循也是不可取的,必要的时候也是考虑反三范式的,完了,好话坏话都被我说了,那就分析一下他们吧】

        三范式【三大特性】:

                原子性:无重复的列,一列只能包含一个字段

                        不符合原子性:在校信息可拆分多个单位列

学号姓名在校信息
1张三读研,研一
2李四本科,大四

                        符合原子性:不能再次拆分多个单位列

学号姓名学历年级
1张三读研研一
2李四本科大四

                  

                唯一性:主键约束,一行只能被唯一标识

                        不符合唯一性:只通过张三不确定是某一个学生

姓名学历年级
张三读研研一
李四本科大四
张三本科大三
王五本科大三

                        符合唯一性:通过学号可以确定某一个学生

学号姓名学历年级
1张三读研研一
2李四本科大四
3张三本科大三
4王五本科大三

                依赖性:非主键字段要严格依赖于主键字段

                        不符合依赖性:

学号姓名年级辅导员编号辅导员名称辅导员性别辅导员年龄
1张三研一110张飞39
2李四大四120李白40

                        符合依赖性:                      

学号姓名年级辅导员编号
1张三研一110
2李四大四120
辅导员编号辅导员名称辅导员性别辅导员年龄
110张飞39
120李白40

                优势:没有冗余字段,增删改效率较高

                劣势:join表太多,查询效率低,索引优化较难

        反三范式【和三范式相反,这里就做过多说明】:

                优势:查询效率高,索引优化相对简单

                劣势:存在冗余字段,增删改效率较低

3.索引优化

        a.什么是索引

                索引是一种数据结构,它会持久化到硬盘,可以提高查询效率,你可以把它理解为排序好的可快速查找的数据。

        b.什么情况下适合创建索引

                主键自带索引

                经常被查询的字段适合添加索引

                外键适合添加索引

                排序字段适合添加索引

                分组字段适合添加索引

        c.什么情况下不适合创建索引

                不被查询的字段不适合创建索引

                增删改比较频繁的表不适合创建索引

                表数据较少的表不适合创建索引

                表重复率比较高的字段不适合创建索引

        d.如何避免索引失效

                全值索引匹配

                最左匹配原则

                select * 有可能会造成索引失效

                字符串查询的时候不加单引号会造成索引失效

                sql上进行函数,计算,类型转换会造成索引失效

                范围查找范围右边的字段查询会造成索引失效

                like以通配符查询所有会生效

                is null is not null or 不等号会造成索引失效

        e.如何进行线上排查【只说流程哦】

                首先是运营人员或者测试人员发现产品页面很慢

                前后端人员确定是后端问题

                后端人员确定不是代码逻辑问题,是sql问题

                由项目组长或者项目经理告诉运维人员开启数据库阈值,进行慢sql查询

                等个两到三天获取到慢sql

                对获取的慢sql执行explan计划,可以看到sql的查询类型,

                                如:

                                        是否是单表或者是子查询,或者产生临时表

                                        查询是否是全表扫描或者是范围扫描等

                                        sql索引及sql实际使用索引等

                一般就是这些了,在实际中我们项目中表是设计都是采用单表,在执行计划中看看索引是否被使用等信息在进行优化

                包括慢sql查询我们这边也是不使用的,我们这边整合了阿里云的Druid插件,它不仅提供了数据库连接的一下信息和sql的访问次数,成功次数及sql代码,最重要的是它提供了可视化页面,这点非常的好!

                        

相关内容

热门资讯

安卓系统不推送更新,揭秘背后的... 最近是不是发现你的安卓手机有点儿“懒”啊?更新推送总是慢吞吞的,让人等得花儿都谢了。别急,今天就来给...
ape格式转换安卓系统,享受音... 你有没有想过,你的安卓手机里的ape格式音乐文件,竟然可以通过一个小小的转换,焕发出全新的生命力?没...
获取安卓系统加载器,核心功能与... 你有没有想过,你的安卓手机里那些神奇的软件和游戏是怎么被安装到你的设备上的呢?没错,就是通过一个叫做...
安卓系统文件夹在哪,安卓系统文... 你有没有遇到过这样的情况:手机里乱糟糟的,想找个文件却找不到?别急,今天就来给你揭秘安卓系统文件夹的...
安卓手感最好的裸机系统,安卓手... 安卓手感最好的裸机系统:探索极致体验的秘密武器在数字世界中,我们常常被各种功能和复杂操作所包围,尤其...
nas如何刷回安卓系统,轻松刷... 你有没有想过,你的NAS(网络附加存储)突然间变成了一个安卓的小天地?别急,这可不是什么天方夜谭,而...
荣耀沿用的安卓系统吗,打造个性... 你有没有注意到,最近荣耀的新机发布,大家都在热议一个问题:荣耀沿用的安卓系统吗?这可是个让人好奇不已...
快麦erp系统安卓下载,一键下... 你有没有听说最近一款叫做快麦ERP系统的软件在安卓平台上大受欢迎呢?没错,就是那个能让你企业管理如虎...
华为安卓系统下载app,一步到... 你有没有发现,最近华为手机的用户们都在忙活一件大事儿?没错,那就是下载安卓系统上的各种app啦!这可...
原生安卓系统游戏模式,畅享沉浸... 亲爱的手机游戏爱好者们,你是否曾为手机游戏运行不畅而烦恼?又或者,你是否渴望在游戏中获得更极致的体验...
安卓9改系统语言设置,轻松切换... 你有没有发现,手机里的语言设置有时候真的让人头疼?比如说,你突然想用一下安卓9的系统语言设置,结果发...
怎么升级安卓最新系统,畅享安卓... 亲爱的手机控们,你是不是也和我一样,对安卓系统的更新充满了期待?每次系统升级,都仿佛给我们的手机带来...
安卓系统电视跳舞毯,家庭娱乐新... 你有没有想过,家里的电视除了用来追剧、看电影,还能变成一个充满活力的娱乐中心?没错,我要给你介绍的就...
安卓系统维护周期,全方位守护您... 亲爱的手机控们,你是不是也和我一样,对安卓系统的维护周期充满了好奇呢?毕竟,我们的手机可是我们日常生...
安卓系统电脑怎么往下滑,一扫即... 你有没有发现,用安卓系统电脑的时候,有时候屏幕上会出现一些小图标或者应用,你想要快速浏览或者切换,却...
手机中判断安卓系统苹果系统js... 你有没有想过,你的手机里到底装的是安卓系统还是苹果系统呢?这可不是一个小问题哦,因为不同的系统,就像...
window系统和安卓系统还原... 你有没有遇到过手机或电脑突然卡顿,或者不小心删掉了重要的文件?别急,今天就来给你详细说说如何让win...
安卓系统打电话变声器,轻松实现... 安卓系统打电话变声器:探索数字时代的通信革新在数字化浪潮中,智能手机已经成为我们生活中不可或缺的一部...
android系统和安卓哪个好... 说到手机操作系统,你是不是也和我一样,对Android系统和安卓系统傻傻分不清楚呢?别急,今天就来给...
米柚系统是不是安卓,基于安卓的... 亲爱的读者,你是否曾在手机的选择上犹豫不决,尤其是当面对那些自称是安卓系统但又有自己特色的操作系统时...