SQL性能优化



   1.创建索引,在大量甚至海量数据的表里有索引检索的速度要比没有索引检索快上几个数量级。

   2.视图,视图本身不能建立索引,但是视图可以应用引用表的索引,当引用表的字段结构未变化时。

   3.IN , NOT IN ==>替换方案EXISTS, NOT EXISTS 
      尤其是NOT IN不能应用表的索引,建议不使用。在 JOIN  关联后 也最好不要使用IN.

      但是如果是 IN (12,21,13,14) 这种还是可以使用, 这种用法比 OR ....OR...OR  要快一点儿。

   4. <> , !=

       不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。

       a!=0 改为 a>0 or a<0
       a!=’’ 改为 a>’’
   5.  > 或者<

        a>1  改为 a>=1 ,   b < 2 改为 b<=2;

        这里涉及到索引的应用问题,利用>= 或 <=能够更好的应用索引。

   6. WHERE 后的条件顺序

       mysql 采用从左至右的顺序解析WHERE子句,那些可以过滤掉最大数量记录的条件写在WHERE子句的前面。 

       ORACLE 采用从右至左的顺序解析WHERE子句,那些可以过滤掉最大数量记录的条件写在WHERE子句的末尾。

   7. GROUP BY

      Group BY 后面跟的分组条件越多越慢,切忌不要无谓的添加分组条件。

   8. 在sql文中转换类型会非常的慢 尽量不要使用 to_char, to_date 等函数。
   9. SELECT子句中避免使用 *

       WHERE exsits (select * from XX_table) ==> WHERE exsits (select id from XX_table)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值