SQL数据库优化高度总结,只为概括复习,不负责深入浅出,面试专用!

本文全面总结了SQL数据库优化的关键点,适用于快速复习和面试准备。涵盖索引优化、查询优化、存储优化等多个方面,旨在帮助读者迅速掌握核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 一.确保数据查询使用索引
   1.在首字确定情况下,like尽量避免使用首字百分号,%号放后面是会使用索引的
   2.<>不等于表达式不走索引,尽量使用大于小于代替
   3.不要使用IN,用exists代替
   4.OR不走索引,尽量用UNION代替
   5.联合索引顺序有讲究,只有按顺序索引才生效
   6.索引列一定不能存在null值,否则索引失效


  二、SQL解析优化 
     1.SQL解析FROM是从右到左,如果是多表关联,把最简单的表写在最右边。
      2.SQL解析条件是从下到上,所以表之间关联一定要写在其他表的条件之前。
     3.SELECT中避免使用*,*需要耗费解析器工作.
     4.使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表。这个比较难理解,举个粒子:
         例如:
         SELECT COUNT(*),SUM(SAL)
         FROM EMP
         WHERE DEPT_NO = 0020
         AND ENAME LIKE ‘SMITH%’;
         SELECT COUNT(*),SUM(SAL)
         FROM EMP
         WHERE DEPT_NO = 0030
         AND ENAME LIKE ‘SMITH%’;
          你可以用DECODE函数高效地得到相同结果
         SELECT COUNT(DECODE(DEPT_NO,0020,’X’,NULL)) D0020_COUNT,
         COUNT(DECODE(DEPT_NO,0030,’X’,NULL)) D0030_COUNT,
         SUM(DECODE(DEPT_NO,0020,SAL,NULL)) D0020_SAL,
         SUM(DECODE(DEPT_NO,0030,SAL,NULL)) D0030_SAL
         FROM EMP WHERE ENAME LIKE ‘SMITH%’;
      5.使用ROWID进行高效操作
        例如:删除重复的数据 
           DELETE  FROM  EMP E  WHERE  E.ROWID > (SELECT MIN(X.ROWID) 
           FROM  EMP X  WHERE  X.EMP_NO = E.EMP_NO);                  
      6.删除全表数据时,使用DDL'TRUNCATE'代替Delete
      7.事务要及时提交,一般表建议在2w左右的数据进行提交
      8.一对多关联时,如果结果集是小的数据,尽量使用EXISTS
          SELECT  DISTINCT  DEPT_NO,DEPT_NAME  FROM  DEPT D , EMP E             
          WHERE  D.DEPT_NO = E.DEPT_NO                                          
          (高效):                                                               
          SELECT  DEPT_NO,DEPT_NAME  FROM  DEPT D  WHERE  EXISTS ( SELECT ‘X’ 
          FROM  EMP E  WHERE E.DEPT_NO = D.DEPT_NO); 
     
      10. 尽量使用union all代替union   
            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值