固然现今硬件当作本已经下降,经由过程进级硬件晋升系统机能也是常用的优化体例。而及时性要求很高的系统,仍是要从sql方面进行优化,本文以sqlserver为例演示,此中的优化道理也合用于其他数据库
优化的一个本家儿要方面就是尽量避免全表扫描,改为索引扫描
恰当的索引
1)索引就半斤八两于字典的目次,按照索引查找就可以直接定位具体页数,不消整本字典一页一页的查找,效率天然是不问可知。
2)对于汗青数据不太存眷的场景,好比订单,凡是来说,3年之前的订单数据,很少会需要查询到,比来的订单才是最常用的,那么可以考虑把订单日期作为索引的一个列建立
3)经常需要where查询的字段也作为索引的一个列建立
尽量不要有空判定的语句,因为空判定将导致全表扫描,而不是索引扫描。
对于空判定这种环境,可以考虑对这个列建立数据库默认值
尽量不要利用不等于前提,因为,这会导致全表扫描
对于不等于这种环境,考虑改为规模查询解决
尽量不要利用or前提,因为,这会导致全表扫描
对于or这种环境,可以改为 别离查询,然后 union all
尽量不要利用摆布恍惚查询,因为,这会导致全表扫描
对于摆布恍惚查询的环境,试着改为右侧恍惚查询,如许是可以索引查找的
尽量不要在执行算数运算后的比力,因为,函数、算术运算或其他表达式运算凡是将导致全表扫描
对于这种环境,可以考虑冗余部门数据到表中
尽量利用exists取代in
尽量避免一次性返回年夜数据量,可以考虑分页返回
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!