1.负向条件查询不能使用索引 也就是不等于之类的负向条件,可以优化为in查询 记住, 索引只能告诉你什么存在于表中, 而不能告诉你什么不存在于表中。 2.前导模糊查询不能使用索引,将进行全表扫描,非前导模糊查询则可以使用索引 例如:select from student where name lik ...
分类:
数据库 时间:
2019-11-25 11:35:27
阅读次数:
71
我们看看 TiDB 一段代码的实现 左外连接(Left Out Join)的消除; select 的优化一般是这样的过程: 在逻辑执行计划的优化阶段, 会有很多关系代数的规则, 需要将逻辑执行计划(LogicalPlan)树应用到各个规则中, 尝试进行优化改写; 我们看看其中的一条优化规则: out ...
分类:
数据库 时间:
2019-11-24 17:36:47
阅读次数:
97
SQL优化 - 尽量选择数据类型占空间少,在where ,group by,order by中出现的频率高的字段建立索引- explain 放在查询语句前面可以获取查询计划,建立合适索引- 尽量避免使用 select * ...;用具体字段代替 * ,不要返回用不到的任何字段 - 少使用like % ...
分类:
数据库 时间:
2019-11-19 13:49:10
阅读次数:
71
select count(1) from pd_xxx_origin_xxx_data where create_time like '2019-02-23%' and source='20036' SELECT sum(case when create_time like '2019-02-23% ...
分类:
数据库 时间:
2019-11-12 20:08:07
阅读次数:
84
SQL优化背景 开发项目上线初期,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断SQL对程序的运行效率有多大,故很少针对SQL进行专门的优化,而随着时间的积累,业务数据量的增多,SQL的执行效率对程序的运行效率的影响逐渐增大,此时对SQL的优化就 ...
分类:
数据库 时间:
2019-11-09 11:59:27
阅读次数:
76
一、项目慢查询问题 1、在使用多表关联查询并排序后,接口把数据给到前端并在界面渲染成功的总体时间较长,需要进行优化,在时间有限的情况下,只能对SQL语句进行优化,想到的方案是做中间表,但需要些时间,会影响上线时间,根据该功能的使用场景及优先级,最后决定先做SQL优化,后续进行迭代调整。 2、在弱网环 ...
分类:
其他好文 时间:
2019-11-07 23:46:14
阅读次数:
80
在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结一些方法,供大家参考。 01 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 02 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使 ...
分类:
数据库 时间:
2019-11-07 15:20:30
阅读次数:
112
你可能从来都没有听说过回表一词,但是你在实际工作中肯定用过回表。如果还没有听过回表,那我相信不管你看多少 SQL 优化的知识,都还只是停留在表面。即使你参考学习过我前面的这篇文章《MySQL 性能优化神器 Explain 使用教程》。 一条SQL语句的查询过程 我们先来看看什么是回表? 通俗的讲就是 ...
分类:
其他好文 时间:
2019-11-06 16:35:41
阅读次数:
102
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严 ...
分类:
数据库 时间:
2019-11-02 11:43:32
阅读次数:
92
一、百万级数据库优化方案 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: 最好不要给数据库留NULL,尽可能的使用 NOT ...
分类:
数据库 时间:
2019-10-28 22:33:56
阅读次数:
199