189 8069 5689

mysql中SQL优化的示例分析

这篇文章主要为大家展示了“MySQL中SQL优化的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中SQL优化的示例分析”这篇文章吧。

站在用户的角度思考问题,与客户深入沟通,找到咸宁网站设计与咸宁网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广、域名注册虚拟主机、企业邮箱。业务覆盖咸宁地区。

背景:告警查询接口较慢,一般都在2.5秒左右,由于是UI查询,这个时间较长,对于用户有点不可接受

目的:控制查询接口的速度在1秒左右

优化收获:

1、order by

  • order by 后面的列也需要执行计划匹配上索引才会高效。

  • 不一定用了order by 就一定慢,有时候说不定会更快,更快的情况,一般是由于,order by 的列经过mysql分析后选择了一个适合order by以及where后条件的索引;而去掉order by后反而使用了一个差的索引,从而导致去掉order by后反而查询会变慢。案例如下:

  • mysql中SQL优化的示例分析

  • 没有order by 反而慢了

        看下执行计划,并没有使用INDEX_STATUS_LEVEL

mysql中SQL优化的示例分析

使用order by 试试:

mysql中SQL优化的示例分析

可见变快了,看下执行计划:

mysql中SQL优化的示例分析

2、mysql 的索引选择

mysql会根据自身的逻辑选择索引,但是实测下来不一定是最优的,经过多次测试发现,mysql将alertstatus和leveles两个字段的索引进行合并的时候,速度最快。最终通过加了status_level联合索引解决了。

第二点解决了项目sql优化的问题,其它点为优化过程中的收获。

3、find_in_set函数

这个函数性能较差,需要将数据转换为多行。

4、并不是所有索引对查询都有效(如第二点的感悟),SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。 

5、尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。 

6、尽量避免大事务操作,提高系统并发能力

7、尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。 

8、排查命令一:show global status;

可以列出MySQL服务器运行各种状态值

以上是“mysql中SQL优化的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


当前名称:mysql中SQL优化的示例分析
新闻来源:http://cdxtjz.com/article/ipohoj.html

其他资讯