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

                        

相关内容

热门资讯

电视安卓系统哪个品牌好,哪家品... 你有没有想过,家里的电视是不是该升级换代了呢?现在市面上电视品牌琳琅满目,各种操作系统也是让人眼花缭...
安卓会员管理系统怎么用,提升服... 你有没有想过,手机里那些你爱不释手的APP,背后其实有个强大的会员管理系统在默默支持呢?没错,就是那...
安卓系统软件使用技巧,解锁软件... 你有没有发现,用安卓手机的时候,总有一些小技巧能让你玩得更溜?别小看了这些小细节,它们可是能让你的手...
安卓系统提示音替换 你知道吗?手机里那个时不时响起的提示音,有时候真的能让人心情大好,有时候又让人抓狂不已。今天,就让我...
安卓开机不了系统更新 手机突然开不了机,系统更新还卡在那里,这可真是让人头疼的问题啊!你是不是也遇到了这种情况?别急,今天...
安卓系统中微信视频,安卓系统下... 你有没有发现,现在用手机聊天,视频通话简直成了标配!尤其是咱们安卓系统的小伙伴们,微信视频功能更是用...
安卓系统是服务器,服务器端的智... 你知道吗?在科技的世界里,安卓系统可是个超级明星呢!它不仅仅是个手机操作系统,竟然还能成为服务器的得...
pc电脑安卓系统下载软件,轻松... 你有没有想过,你的PC电脑上安装了安卓系统,是不是瞬间觉得世界都大不一样了呢?没错,就是那种“一机在...
电影院购票系统安卓,便捷观影新... 你有没有想过,在繁忙的生活中,一部好电影就像是一剂强心针,能瞬间让你放松心情?而我今天要和你分享的,...
安卓系统可以写程序? 你有没有想过,安卓系统竟然也能写程序呢?没错,你没听错!这个我们日常使用的智能手机操作系统,竟然有着...
安卓系统架构书籍推荐,权威书籍... 你有没有想过,想要深入了解安卓系统架构,却不知道从何下手?别急,今天我就要给你推荐几本超级实用的书籍...
安卓系统看到的炸弹,技术解析与... 安卓系统看到的炸弹——揭秘手机中的隐形威胁在数字化时代,智能手机已经成为我们生活中不可或缺的一部分。...
鸿蒙系统有安卓文件,畅享多平台... 你知道吗?最近在科技圈里,有个大新闻可是闹得沸沸扬扬的,那就是鸿蒙系统竟然有了安卓文件!是不是觉得有...
宝马安卓车机系统切换,驾驭未来... 你有没有发现,现在的汽车越来越智能了?尤其是那些豪华品牌,比如宝马,它们的内饰里那个大屏幕,简直就像...
p30退回安卓系统 你有没有听说最近P30的用户们都在忙活一件大事?没错,就是他们的手机要退回安卓系统啦!这可不是一个简...
oppoa57安卓原生系统,原... 你有没有发现,最近OPPO A57这款手机在安卓原生系统上的表现真是让人眼前一亮呢?今天,就让我带你...
安卓系统输入法联想,安卓系统输... 你有没有发现,手机上的输入法真的是个神奇的小助手呢?尤其是安卓系统的输入法,简直就是智能生活的点睛之...
怎么进入安卓刷机系统,安卓刷机... 亲爱的手机控们,你是否曾对安卓手机的刷机系统充满好奇?想要解锁手机潜能,体验全新的系统魅力?别急,今...
安卓系统程序有病毒 你知道吗?在这个数字化时代,手机已经成了我们生活中不可或缺的好伙伴。但是,你知道吗?即使是安卓系统,...
奥迪中控安卓系统下载,畅享智能... 你有没有发现,现在汽车的中控系统越来越智能了?尤其是奥迪这种豪华品牌,他们的中控系统简直就是科技与艺...