更多python、linux、网络安全学习内容,可移步:www.oldboyedu.com或关注\"老男孩linux\"公众号
分类: 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默认是不开启查询缓存的,需要手动开启。
上一篇:
下一篇: