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

                        

相关内容

热门资讯

js修改安卓系统设置,揭秘如何... 你有没有想过,你的安卓手机其实是个大宝藏,里面藏着许多你不知道的秘密?今天,就让我带你一起探索如何用...
安卓手机a9系统,功能升级与性... 你有没有发现,最近你的安卓手机变得有点不一样了?是不是觉得操作起来更加流畅,应用加载速度也快了不少?...
酷开安卓系统能做win系统嘛,... 亲爱的读者们,你是否曾想过,那些在我们客厅里陪伴我们度过无数夜晚的智能电视,它们能否像电脑一样,运行...
iphone上怎么用安卓系统,... 你有没有想过,在iPhone上也能体验安卓系统的乐趣呢?没错,这可不是天方夜谭,而是可以通过一些巧妙...
国产机都是安卓系统,安卓生态下... 你有没有发现,现在市面上几乎所有的国产手机都运行着安卓系统?这可不是随便说说,而是实实在在的现象。今...
安卓系统触屏调节,轻松掌控屏幕... 手机屏幕上的触感调节功能,你有没有觉得有时候有点儿“挑食”呢?有时候太灵敏了,点个图标都像是在玩杂技...
鸿蒙系统chrome能替换安卓... 你有没有想过,你的手机里那个熟悉的安卓系统,有一天可能会被一个全新的家伙给顶替了呢?没错,说的就是华...
奔驰c级安卓系统教程,尽享智能... 亲爱的车友们,你是否对奔驰C级的安卓系统充满了好奇?想要深入了解这个高科技的驾驶伴侣,那就跟着我一起...
鸿蒙退回安卓系统哪个好,系统抉... 最近手机圈可是热闹非凡呢!华为的新操作系统鸿蒙系统,自从发布以来就备受关注。不过,最近有个大新闻,就...
安卓系统还是ios系统软件,探... 你有没有想过,手机里的那个小小的操作系统,其实就像是我们生活中的小助手,每天都在默默陪伴着我们呢?今...
刷安卓系统的诺基亚,经典与创新... 你知道吗?最近在手机圈子里,有一股复古风潮正在悄然兴起。没错,就是那个曾经风靡全球的诺基亚,竟然又重...
红米5原生安卓系统,尽享原生魅... 你有没有发现,最近红米5这款手机在圈子里可是火得一塌糊涂呢!尤其是它的原生安卓系统,简直让人爱不释手...
讴歌车载系统是安卓吗,揭秘其是... 你有没有想过,开车的时候,车载系统是不是安卓的呢?这可是个有趣的话题哦!想象当你驾驶着爱车,车载系统...
安卓系统安装ppt查看软件,安... 你有没有遇到过这种情况:手机里下载了PPT文件,却苦于没有合适的软件来查看?别急,今天就来给你详细介...
系统指纹在哪里设置安卓,解锁个... 你有没有想过,你的安卓手机里有一个神秘的“系统指纹”呢?这个指纹就像你的身份证一样,独一无二,它隐藏...
安卓系统光驱适配器,拓展设备使... 你有没有想过,你的安卓手机竟然也能变成一台迷你电脑?没错,就是那种可以装各种软件、看电影、玩游戏的小...
ios系统怎么加安卓系统的好友... 你是不是也和我一样,手机里既有安卓系统的好友,又有iOS系统的联系人?有时候,想和他们一起分享生活中...
乐视手机改安卓系统,乐视手机深... 亲爱的读者们,你是否还记得那个曾经红极一时的乐视手机?如今,它已经悄然改头换面,换上了全新的安卓系统...
安卓变苹果系统好用吗,体验系统... 你有没有想过,为什么有些人从安卓手机换成了苹果手机呢?是不是觉得苹果的系统更流畅、更安全?今天,我们...
关掉安卓系统自动升级,教你轻松... 你有没有发现,手机里的安卓系统总是时不时地跳出来提醒你升级?有时候,你正忙得不可开交,或者正在享受一...