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代码,最重要的是它提供了可视化页面,这点非常的好!

                        

相关内容

热门资讯

微软平板有没有安卓系统,多平台... 亲爱的读者们,你是否在寻找一款既能满足工作需求,又能畅享娱乐的平板电脑呢?今天,我要和你聊聊一个热门...
多普达有没有安卓系统,安卓系统... 提起多普达,那可真是80后、90后心中的一抹青春回忆啊!那时候,拥有一台多普达手机,简直就是身份的象...
安卓电脑改系统定位,解锁全新使... 你有没有想过,你的安卓电脑改系统后,竟然能变身成为超级定位神器?没错,就是那种能让你随时随地掌握位置...
安卓系统宠物游戏怎么玩,带你领... 你有没有想过,在忙碌的生活中,来点轻松的宠物游戏,让心情瞬间放松呢?安卓系统上的宠物游戏种类繁多,玩...
安卓怎么玩低系统游戏,解锁低系... 你有没有想过,即使你的安卓手机系统更新到了最新的版本,依然可以玩那些低系统要求的游戏呢?没错,今天就...
华为手机助手安卓系统,安卓系统... 你有没有发现,最近你的手机变得越来越聪明了?没错,我要说的就是那个陪伴你日常生活的得力助手——华为手...
哪个安卓系统占内存小 你有没有发现,手机用久了,内存总是不够用?尤其是安卓系统,有时候感觉就像是个无底洞,不管你怎么清理,...
安卓系统调时间总是跳回,安卓系... 你是不是也遇到过这种情况?手机里的安卓系统调时间,结果时间总是跳回去了!这可真是让人头疼的小麻烦。今...
苹果5改装安卓系统,体验全新智... 你手中的苹果5是不是已经有点儿“老态龙钟”了呢?别急,今天就来给你支个招,让你的爱机焕发第二春——改...
车机安卓系统破解方法,轻松解锁... 你有没有想过,你的车机安卓系统其实也可以像手机一样,玩出花来?没错,就是那种破解后的快感!今天,我就...
安卓原生系统打游戏好吗,畅享游... 你有没有想过,用安卓原生系统打游戏到底怎么样呢?这可是个热门话题,不少手机用户都在纠结这个问题。今天...
内网门户系统安卓版,便捷高效的... 你知道吗?在数字化办公的今天,内网门户系统安卓版可是个神器呢!它就像你的私人助手,随时随地帮你处理工...
苹果改安卓系统的坏处,五大潜在... 你知道吗?最近苹果公司突然宣布,他们要给自家手机换一个新系统——安卓!这消息一出,可真是炸开了锅。不...
安卓系统应用安装过多,如何优化... 手机里的安卓系统应用是不是越来越多,感觉就像是个小型的电子仓库?今天就来聊聊这个话题,看看应用安装过...
安卓系统被曝同样有毒 你知道吗?最近安卓系统又被曝出有毒了!这可不是第一次了,每次听到这样的消息,是不是心里都有些慌慌的?...
安卓系统用什么手机划算,盘点划... 你有没有想过,安卓系统手机那么多,到底哪款最划算呢?别急,今天我就来给你好好盘点让你在选购安卓手机时...
安卓系统平板4k 你有没有想过,拥有一款高清屏幕的安卓系统平板,就像是拥有了移动的私人影院呢?想象在阳光明媚的午后,你...
安卓系统13跟14,安卓系统1... 你知道吗?最近科技圈可是炸开了锅,安卓系统13和14的发布让无数手机爱好者兴奋不已。这两大系统不仅带...
安卓系统分半屏,一触即达 你知道吗?最近在安卓系统上出现了一个超酷的新功能——分半屏!是不是听起来就让人心动呢?想象一边看视频...
安卓系统怎么升级天空岛,轻松实... 亲爱的安卓用户们,你是否也像我一样,对安卓系统的更新充满了期待?尤其是当听说“天空岛”这个新版本时,...