优化建议:
- 索引优化:根据查询条件和连接条件创建索引,可以提高查询性能(有连表查询时,连表关联字段添加上索引)。
- 子查询优化:将子查询改为连接查询,可以提高查询性能。具体可以考虑将es_info_relation_owner表的子查询改为连接查询。
- 避免使用DISTINCT关键字:如果查询结果中有重复的记录,可以考虑使用GROUP BY来替代DISTINCT,可以提高查询性能。
- 避免使用IFNULL函数:可以考虑使用COALESCE函数来替代IFNULL函数,COALESCE函数在MySQL中的性能更好。
SELECT COALESCE(null,null,'测试'); -- 结果:测试
- 避免在WHERE子句中使用函数:可以将函数的结果保存到变量中,然后在WHERE子句中使用变量,可以提高查询性能。
- 避免在WHERE子句中使用OR操作符:可以将OR操作符拆分成多个条件,使用UNION或者UNION ALL来合并结果,可以提高查询性能。
- 避免在WHERE子句中使用!=操作符:可以使用<>操作符来替代!=操作符,可以提高查询性能。
Mybatis 动态拼接语句时候经常使用到 大于(>,>=)、小于(<,<=)、不等于(<> ,!=)符号。由于此符号包含了尖括号,Mybatis使用的 *.xml文件格式。在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯
符号 | 原符号 | 替换符号 |
小于 | < | < |
小于等于 | <= | <= |
大于 | > | > |
大于等于 | >= | >= |
不等于 | <> | <> |
与 | & | & |
单引号 | ’ | ' |
双引号 | " | " |
- 避免在WHERE子句中使用IN操作符:可以将IN操作符拆分成多个条件,使用UNION或者UNION ALL来合并结果,可以提高查询性能。
- 避免在WHERE子句中使用LIKE操作符:如果可能的话,可以使用等于操作符来替代LIKE操作符,可以提高查询性能。
- 避免在WHERE子句中使用通配符:%:如果可能的话,可以使用等于操作符来替代通配符:%,可以提高查询性能。
- 避免在WHERE子句中使用函数:如果可能的话,可以将函数的结果保存到变量中,然后在WHERE子句中使用变量,可以提高查询性能。
待续....
标签:WHERE,可以,SQL,使用,查询,操作符,日常,子句,优化 From: https://blog.51cto.com/u_16226278/7148774