前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >数据库MySQL-SQL优化

数据库MySQL-SQL优化

作者头像
cwl_java
发布于 2022-11-28 00:59:57
发布于 2022-11-28 00:59:57
1.2K0
举报
文章被收录于专栏:cwl_Javacwl_Java
1.SQL优化
  • 1.1 sql只取所需字段不要 *
  • 1.2 非业务需求无法解决情况下,不在SQL当中使用函数
  • 1.3 删除时,务必记得删除相关表数据
  • 1.4 尽量不要使用FULLTEXT全文索引作为MySQL索引类型的创建
  • 1.5 做同一个记录修改时,尽量不要删掉再插入一个
  • 1.6 对于大数据量的表(超过1000万),坚决不跨库,不联表
  • 1.7 where语句后字段区分度高的放在前,字段区分度低的放在后

正例:WHERE id = 10086 AND gender = ‘男’

反例:WHERE gender = ‘男’ AND id = 10086

  • 1.8 精准查询创建索引时使用hash方法,范围查询创建索引时使用b_tree方法
2.代码优化
  • 2.1 多个增,删,改时,一定要放到service中去
  • 2.2 for循环
    • for循环下不要定义不必要的变量
    • for循环下不要做任何数据库操作
    • for循环下不要new一个类,可在循环外先new一个备用后在克隆一个。
    • 尽量不要使用嵌套for循环,可以使用map或者set记录后分开查询
  • 2.4 只要涉及到页面传值,必须做非空判断
  • 2.5 service方法在操作完数据库后尽可能的少做业务处理
  • 2.6 一个对象在get值时,最好先判断对象是否为空,也可以减少很多情况的空指针,但是需要自己设置好对应的日志信息,避免异常找不到
  • 2.7 需要自己手写的非空判断,需要将null写在equals前,建议使用谷歌提供的common.lang3当中的工具类
3.接口调用
  • 3.1 使用HTTP协议调用其他接口的服务,不论是调用方还是被调用方都记得要做值得非空判断
  • 3.2 调用方在定义接口返回数据的时候尽量要排除不需要的字段,只取所需,当查询数据涉及多个类的时候,可以考虑用一个新的VO来进行传递
  • 3.3 配置双数据源会比HHTP接口更加稳定,但是未必会比HTTP更快,因网速而论
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
sql优化
MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引。
用户11397231
2024/12/10
1200
sql优化
霜皮剥落紫龙鳞,下里巴人再谈数据库SQL优化,索引(一级/二级/聚簇/非聚簇)原理
    举凡后端面试,面试官不言数据库则已,言则必称SQL优化,说起SQL优化,网络上各种“指南”和“圣经”难以枚举,不一而足,仿佛SQL优化已然是妇孺皆知的理论常识,然后根据多数无知(Pluralistic ignorance)理论,人们印象里觉得多数人会怎么想怎么做,但这种印象往往是不准确的。那SQL优化到底应该怎么做?本次让我们褪去SQL华丽的躯壳,以最浅显,最粗俗,最下里巴人的方式讲解一下SQL优化的前因后果,前世今生。
用户9127725
2022/08/08
2800
霜皮剥落紫龙鳞,下里巴人再谈数据库SQL优化,索引(一级/二级/聚簇/非聚簇)原理
MySQL优化的底层逻辑
去年刚开始写博客的时候写了一篇《MySQL性能调优参考》,文章中提到优化的几个技巧,比如数据类型的使用、范式和反范式的合理使用、索引的使用及其使用的注意事项等等。其中我们接触最多的就是索引,你可能知道索引的底层结构是B+Tree、使用索引要遵守最左匹配原则,那你知道为什么要用B+Tree、为什么使用索引有那么多注意事项吗?所以还是要知其然知其所以然,看完这篇文章你就懂了。
王二蛋
2024/01/23
4852
MySQL优化20招
比如,存储字符串“101”,对于char(10),表示你存储的字符将占10个字节(包括7个空字符),在数据库中它是以空格占位的,而同样的varchar2(10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。
Maynor
2022/10/27
6360
MySQL索引与SQL语句优化
概念 1.普通索引:最基本的索引,它没有任何限制 2.唯一索引:索引列的值必须唯一,且不能为空,如果是组合索引,则列值的组合必须唯一。 3.主键索引:特殊的索引,唯一的标识一条记录,不能为空,一般用primary key来约束。 4.联合索引:在多个字段上建立索引,能够加速查询到速度 5.Union:对两个结果集进行并集操作,不包括重复的行,同时进行默认规则排序 6.Union all:对两个结果集进行并集操作,包括重复行,不进行排序
星哥玩云
2022/08/18
1.6K0
MySQL优化器之Cardinality(Analyze table)
选择索引是优化器的工作,而优化器选择索引的目的,是找到一个最优的执行方案,并用最小的代价去执行语句。在数据库里面,扫描行数是影响执行代价的因素之一。扫描的行数越少,意味着访问磁盘数据的次数越少,消耗的 CPU 资源越少。当然,扫描行数并不是唯一的判断标准,优化器还会结合是否使用临时表、是否排序等因素进行综合判断。
Power
2025/03/01
960
MySQL索引优化看这篇文章就够了!
本文主要讨论MySQL索引的部分知识。将会从MySQL索引基础、索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开(本文图片可点开放大)。
良月柒
2019/04/08
4410
项目中至少提高3倍的19条MySQL优化
本文我们来谈谈项目中常用的MySQL优化方法,巧用这19条技巧,至少提高3倍效率,具体如下:
格姗知识圈
2019/07/19
6240
项目中至少提高3倍的19条MySQL优化
MySQL从删库到跑路_高级(六)——索引
索引(Index)是帮助MySQL高效获取数据的数据结构。 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的。MyISAM和InnoDB存储引擎只支持BTREE索引,MEMORY/HEAP存储引擎支持HASH和BTREE索引。    
良月柒
2019/03/19
1.2K0
mysql数据库SQL优化
MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到更新操作完成。另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的,如果只作为查询效果很好。
王念博客
2019/07/24
2.4K0
从程序员的角度深入理解MySQL前言数据库基本原理探索MySQL索引背后的原理SQL优化神器:explain
作为一名工作了4年的程序猿,今天我将站在程序员的角度以MySQL为例探索数据库的奥秘!
用户2890438
2018/08/21
4220
从程序员的角度深入理解MySQL前言数据库基本原理探索MySQL索引背后的原理SQL优化神器:explain
SQL优化篇:如何成为一位写优质SQL语句的绝顶高手!
写SQL语句不难,稍微系统学习过数据库相关技术的人都能做到,但想要写好SQL却也不是一件易事,在大多数编写SQL的时候,很多人都是以实现需求为原则去撰写的,当一条SQL写出来之后,只要能满足业务需求就行,不会考虑它有没有优化点,能不能让它跑的更快。
田维常
2023/08/31
1.5K0
SQL优化篇:如何成为一位写优质SQL语句的绝顶高手!
MySQL数据库规约.
一、建表规约 1、表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint(1 表示是, 0 表示否) 。 2、表名、字段名必须使用小写字母或数字, 禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。 3、表名不使用复数名词。 4、主键索引名为 pk_字段名; 唯一索引名为 uk_字段名; 普通索引名则为 idx_字段名。 5、小数类型为 decimal,禁止使用 float 和 doubl
JMCui
2018/03/15
1.4K0
MySQL索引设计不可忽视的知识点
本文主要讨论MySQL索引的部分知识。将会从MySQL索引基础、索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开。
lyb-geek
2018/12/20
4890
MySQL索引设计不可忽视的知识点
MySQL 索引及查询优化总结
该文介绍了在技术社区中如何从海量数据中获取特定字段(OrderID)的查询优化方法,包括使用索引、避免使用通配符、使用DISTINCT、GROUP BY和UNION等,以便更快地获取并分析数据。
谢庆玲
2017/05/03
29.2K3
MySQL 索引及查询优化总结
MySQL索引原理以及查询优化「建议收藏」
一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。
全栈程序员站长
2022/07/21
4770
MySQL索引原理以及查询优化「建议收藏」
MySQL数据库:SQL优化与索引优化
假如有联合索引 (emp_no 、title、from_date ),那么下面的 SQL 中 emp_no 可以用到索引,而title 和 from_date 则使用不到索引。
全栈程序员站长
2022/06/29
1.4K0
关于SQL优化若干
博主负责的项目主要采用阿里云数据库MySQL,最近频繁出现慢SQL告警,执行时间最长的竟然高达5分钟。导出日志后分析,主要原因竟然是没有命中索引和没有分页处理。其实这是非常低级的错误,我不禁后背一凉,团队成员的技术水平亟待提高啊。改造这些SQL的过程中,总结了一些经验分享给大家,如果有错误欢迎批评指正。
用户4283147
2022/10/27
3850
关于SQL优化若干
Java面试——数据库
【1】Read Uncommitted(读取未提交内容):出现脏读,也就是可能读取到其他会话中未提交事务修改的数据。 【2】Read Committed(读取已提交内容):不可重复读,只能读取到已经提交的数据。Oracle 等数据库默认的隔离级别。 【3】Repeatable Read(可重复读):出现幻读。在同一个事务内的查询都和事务开始时刻一致。InnoDB默认级别。 【4】Serializable(串行读):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞。
Java架构师必看
2021/05/06
6060
Java面试——数据库
大厂面试系列(八):数据库mysql相关
数据库相关 mysql索引的数据结构,加索引的原则 InnoDB和myiasm的区别,以及常见的mysql优化方案 sql查询优化 说说Mysql的sql优化 mysql的索引,b+树索引是否支持范围查询,联合索引的失效情况 开发中用了那些数据库?回答mysql,储存引擎有哪些?然后问了我悲观锁和乐观锁问题使用场景、分布式集群实现的原理。 数据库索引原理 mysql索引 B+树原理 mysql索引是怎么实现的?b+树有哪些特点?真实的数据存在哪里?哪些情况下建索引?解释下最左匹配原则?现在一个表有三列a
zhaozhen
2021/07/15
1.1K0
相关推荐
sql优化
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文