1.查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化) 2.涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合 3.如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引.加快查询速度 4.针对数量大的表进行历史表分离(如交易流水表) 5.数据库主从分离,读写分离,降低读写针对同一表同时的压力,至于主从同步,mysql有自带的binlog实现 主从同步 6.explain分析sql语句,查看执行计…
1.查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化) 2.涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合 3.如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引.加快查询速度 4.针对数量大的表进行历史表分离(如交易流水表) 5.数据库主从分离,读写分离,降低读写针对同一表同时的压力,至于主从同步,mysql有自带的binlog实现 主从同步 6.explain分析sql语句,查看执行计…
一条sql执行过长的时间,你如何优化,从哪些方面 1.查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化)2.涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合3.如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引.加快查询速度4.针对数量大的表进行历史表分离(如交易流水表)5.数据库主从分离,读写分离,降低读写针对同一表同时的压力,至于主从同步,MySQL有自带的binlog实现 主从同步 个…
1.如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号(;). 2.select查询的多个字段之间要用逗号“,”分割,如果查询涉及多个表,那多个表之间也通过逗号分隔 4.使用WHERE语句来设定查询条件. 5.使用WHERE语句来设定查询条件. 6.SELECT 命令可以读取一条或者多条记录. 7.SELECT 命令可以读取一条或者多条记录.…
作者介绍 梁敬彬,福富研究院副理事长.公司唯一四星级内训师,国内一线知名数据库专家,在数据库优化和培训领域有着丰富的经验.多次应邀担任国内外数据库大会的演讲嘉宾,在业界有着广泛的影响力.著有多本畅销书籍,代表作有<收获,不止SQL优化>等. 前两章给大家介绍了发现问题后的整体解决思路,接下来进入SQL优化的局部性思路,这一章我们将学习SQL优化的重要知识:执行计划. 执行计划是什么?如何读懂执行计划?读懂执行计划对我们又有什么用?面对这些疑问,我们从执行计划分析概述.读懂执行计划的关键.从案例…
一.plsql developer工具F5         在sqldeveloper中选中sql按F5即可查看执行计划         …
关于执行计划Cost的三个疑问: 1. 执行计划的Cost越低,SQL就一定跑得越快吗?或者说Cost 和 执行时间成比例关系吗? 2. Oracle 默认产生的执行计划是Cost最低的吗? 3. 如果对象的统计信息都是最新的,执行计划就一定是准确和最优的吗? 实践出真知: 发现一条SQL,跑很久也没结果出来. SQL不是很长,但是执行计划很长. SQL文本: SELECT TO_CHAR(SYSDATE, 'yyyy-mm-dd') AS STAT_DATE, SYSDATE AS STAT_…
摘自: https://blog.csdn.net/zhuzaijava/article/details/77935200 为了验证select 1 与 select 1 from tableName 与 select * from tableName的执行效率,需要测试一下各自执行的时间.于是总结一下,查看mysql语句运行时间的方法. 方法一: show profiles. 1. Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后. Query…
写在前面的话:回想以前上班的时候,空闲时间还是挺多的,但是都荒废了.如今找工作着实费劲了.但是这段时间在极客时间买了mysql45讲,就好像发现了新大陆一样,这是我认真做笔记的第一天,说实话第一讲我已经看了有5遍了吧.今晚认真读了一遍也思考了一遍,打算做一下记录,也让自己再回想一遍,加深印象.其实第一次读也就读到第八讲,然后去面试的时候好多问题都跟这个课程的有关,还好也回答上来了,但感觉不是很深入回答的.现在也想明白了,学习知识这种事情不能操之过急,越着急越静不下心来.给自己定一个目标,从今天开…
我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题.同样,对于MySQL的学习也是这样.平时我们使用数据库,看到的通常都是一个整体.比如,你有个最简单的表,表里只有一个ID字段,在执行下面这个查询语句时: mysql> select * from T where ID=10: 我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在MySQL内部的执行过程. 所以今天我想和你一起把MySQL拆解一下,看看里面都有哪些“零件”,希望借由这个拆解过程…