接口查询超时,常用的sql优化技巧

sql优化总结起来就是:加索引,select查询写字段,查询一条数据写limit 1 ,用连接查询代替子查询,小表驱动大表,排序尽量用索引字段。
1、select语句务必指明字段名称。
2、当只需要一条数据的时候,使用limit 1。
3、如果排序字段没有用到索引,就尽量少排序,可以在程序中排序。
4、联合查询 尽量用union all代替union。
5、建立索引  引起索引失效的情况: 1、使用了select *; 2、索引列上有计算或是函数;3、模糊匹配like查询%开始,4、使用了or连接。
6、用连接查询代替子查询

mysql执行子查询时,需要创建临时表,查询完毕后,需要再删除这些临时表,有一些额外的性能消耗。
7、小表驱动大表 in()  in 适用于左边大表,右边小表。exists 适用于左边小表,右边大表。  
8、先缩小数据的范围之后,再分组或排序; group by  having 
9、合理的数据类型;
        inner join:求两个表交集的数据。
        union对两个结果集进行并集操作,不包括重复行,相当于distinct, 同时进行默认规则的排序;
        union all: 对两个结果集进行并集操作, 包括重复行, 不进行排序;
注意:  UNION 和 UNION ALL 内部的 SELECT 语句必须拥有相同数量的列
        每条 SELECT 语句中列的顺序必须相同
        union all 结果字段的顺序以 union all 前面的表字段顺序为准
        各 SELECT 语句字段名称可以不同,但字段属性必须一致。
        查询的两张表的字段不统一,如果table1比table2的字段内容多,可以使用空字符串来代替;
        如果有筛选条件, 务必先各自筛选,最后在统一的排序;

如果是长度固定的字段,比如用户手机号,一般都是11位的,可以定义成char类型,长度是11字节。
长度固定的字符串字段,用char类型。
长度可变的字符串字段,用varchar类型。
金额字段用decimal,避免精度丢失问题。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值