美文网首页mysql
sql优化经验

sql优化经验

作者: 修行者12138 | 来源:发表于2021-02-26 19:10 被阅读0次

大部分表都有表示逻辑删除的字段,比如is_valid,Y为有效N为无效,写sql时大部分都会带上这个字段,所以建索引时,建议带上这个字段。

比如student表有name列,如果只对name列建索引,where name = ‘xxx’ and is_valid = ‘Y’,索引不生效,应该建(name, is_valid)联合索引

尽量少在mysql做函数计算,容易成为性能瓶颈,建议把函数计算上移到应用层,即java代码。

比如需要查找时间入参前一天的数据,可以这样写: where date = date_add(#{时间入参}, interval -1 DAY),也可以在java层把时间入参减一天,再传到mysql,这样就是 where date = #{时间入参}

尽量使用覆盖索引,覆盖索引不需要回表(回表需要随机IO),explain的extra列有using index表示用上了覆盖索引。

假设有一个学生表,有id name age is_valid四个列,现在有一个根据年龄查询有效姓名的功能,想要用上覆盖索引,索引该怎么建?

答案: KEY idx_age_valid_name (age,is_valid,name)

explain select name from student where age = 30 and is_valid = 'Y';

image.png

如果是select * from a join b where xxx这种写法,会对a和b求笛卡尔积,然后根据条件过滤数据,笛卡尔积非常大,性能极差,因此最好写成select * from a join b on xxx这种写法,结果完全等价。

注意:只有join可以这样等价替换,left join和right join不行

select部分有子查询时,最好自定义PageHelper分页

select
(select a from t1 where xxx) as a,
(select b from t2 where xxx) as b
from t3

使用PageHelper时,会先count一下原sql统计总数用于分页。
对于上面这种sql,select count(上面的sql)与select count(*) from t3结果一样,但是前者耗时更长,如果用PageHelper分页,默认使用前者,需要自定义为后者。
假设原sql的标签为<select id='queryT3'>,可以写一个<select id='queryT3_COUNT>',PageHelper会根据_COUNT后缀判断是否为自定义count函数。

深分页问题
先查id,再用in查数据

相关文章

  • SQL优化经验

    字段属性长度合适(不要太长)类型合理(看谁更符合实际)3.尽量设置not null(查询的时候少比较些) 合理使用...

  • 常用sql优化2019-09-27

    sql优化 sql优化.................................................

  • SQL优化经验积累

    1.条件字段选择性弱时不走索引原因: mysql在条件字段选择性弱,查出的结果集较大,不走索引;比如,一张表内有1...

  • MySQL 优化实战 - 索引篇

    关于SQL优化,这个问题,相信大家过多过少都有过一些了解。最近我也在研究SQL优化方面的东西,分享一些经验。 首先...

  • mysql数据库优化

    1. Mysql优化介绍 1.1 sql优化 a. sql优化分析b. 索引优化c. 常用sql优化d. 常用优化...

  • SparkSQL优化器Catalyst

    SQL优化器执行策略:规则优化和代价优化规则优化是经验式,需要对数据元数据信息充分了解,主要体现在Join;代价优...

  • Mysql 优化

    1.Sql优化 1)sql优化分析2)索引优化3)sql语句优化4)一些常用的技巧优化 (正则、函数) 2.优化数...

  • SQL 优化的几点经验

    结合阿里阿里巴巴Java开发手册,结合自己的经验,对于sql优化有下面几点体会 在应用系统开发初期,由于开发数据库...

  • SQL优化经验总结

    最近在学习SQl优化方面的知识内容,以下做一个总结!!! 1、表连接中选择最有效率的表作为基础表 Oracle...

  • sql优化的一般策略

    sql 优化的一般策略:索引优化,sql改写,参数优化,优化器 索引优化 以select * from vvsho...

网友评论

    本文标题:sql优化经验

    本文链接:https://www.haomeiwen.com/subject/mkmifltx.html