关系型数据库SQL优化指南

本文以MySQL为例,探讨SQL优化的两大核心:使用索引和减少数据量。讲解了索引筛选列避免使用函数,多列索引的顺序,处理NULL,避免OR操作,LIKE的使用,以及DISTINCT和UNION的优化。同时提出减少数据量的方法,如避免DISTINCT,尽早过滤,使用UNION ALL,避免SELECT *,和处理复杂查询时利用临时表。
摘要由CSDN通过智能技术生成

大家有没有过这样的体验,自己的SQL一跑跑半天,别人的SQL点一下结果就出来了,难道真的是别人的运气好?一次还好说,每次都是运气好,反正我是不信。毕竟技术人都是凭实力吃饭的。

下面我们以关系型数据库mysql为例来分析SQL如何跑得更快。从数据库的本质来看SQL优化的核心就是两个方面:

1、使用索引

2、减少数据量。

 

使用索引的优化方法有:

1、where后面的索引筛选列上不要使用函数,如substr,concat,length,数学函数等,使用了函数后原本可以走索引的查询就会变为全表扫描,这样就会极大的增加查询时间。如果我们必须要在where 条件中使用函数的话,可以采用把要过滤的值实现处理成想要的方式,举例来说:

 

 

2、where 后面使用多个列过滤时如果其中有索引列,则索引列必须放在where后面的第一位,如果索引列是多个列则where后面列的顺序也必须与索引列的顺序保持一致,或者是不会走索引的。

 

 

3、where 后面避免使用is null 或者is not null

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值