Chinaunix首页 | 论坛 | 博客
  • 博客访问: 879581
  • 博文数量: 1326
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 13361
  • 用 户 组: 普通用户
  • 注册时间: 2020-11-26 14:30
个人简介

更多python、Linux、网络安全学习内容,可移步:www.oldboyedu.com或关注\"老男孩Linux\"公众号

文章分类

全部博文(1326)

文章存档

2022年(512)

2021年(734)

2020年(80)

我的朋友

分类: Python/Ruby

2022-09-01 11:48:08

  编程人员一定不陌生SQL语句吧,在我们日常写项目过程中,或多或少都会使用到SQL,SQL主要功能有增删改查,其中最常见的就是查询了,因此SQL语句的性能就变得至关重要,如何优化SQL呢?请看下文:

  一、分解SQL

  当我们遇到一个较复杂的SQL时,可以选择将它拆分成多个简单的SQL,这样既能保证处理结果,SQL也更简短了。

  在面对超级复杂SQL语句时,性能提升尤为明显,推荐分解为小查询来进行优化,不过在应用设计时,如果一个查询能解决问题且不会产生性能问题,这是完全没问题的。

  分解可以使缓存更高效,可以很方便地缓存单表查询结果对应的结果,执行单个查询也可以减少表锁的竞争,在程序应用层做关联,更容易对数据库进行拆分,也更容易做到高性能和可扩展。

  二、查询切分

  遇到结果集很大的查询,我们可以采用“分而治之”的思想,即将大查询切分为小查询,每个查询功能完全一样,只是各自完成一小部分,每次只返回一小部分的查询结果,类似于分页查询。

  查询切分不管是对于SQL查询本身,还是对于上层业务来说,都是很小的开销。

  三、执行计划

  使用EXPLAIN关键字,可以让我们知道MYSQL是如何执行SQL语句的,可以帮助我们分析我们的查询语句或是表结构的性能瓶颈,EXPLAIN的查询结果还会告诉我们索引主键是如何被利用的,数据表示如何被搜索或排序的等等。

  四、遵守原则

  在我们平时写SQL时,养成良好习惯就可以很大程度上避免一些SQL性能问题。盘点以下几点:

  a. 永远为每张表设置一个ID主键;

  b. 避免使用SELECT *;

  c. 为搜索字段建立索引;

  d. 在Join表时使用对应类型的列,并将其索引;

  e. 尽可能使用NOT NULL;

  五、使用查询缓存

  当有很多相同查询被执行多次时,这些结果往往会被放入一个缓存中,这样后续的相同查询就不用操作而直接访问缓存结果了。

  MySQL查询缓存保存查询返回的完整结果。当查询命中该缓存,MySQL会like返回结果,跳过了解析、优化和执行截断。

  这是提高查询性能最有效的方法之一,而且这是被MySQL引擎处理的,通常MySQL默认是不开启查询缓存的,需要手动开启。

阅读(789) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~