数据库优化

外键必须加索引

SELECT语句中避免使用 *,尽量应该根据业务需求按字段进行查询

3 在 where 及 order by 涉及的列上建立索引,要尽量避免全表扫描。

4 在设计表时要避免表中字段出现null的情况,通常要为其设置默认值,避免在查找时放弃使用索引而进行全表扫描(null的话如果有索引不生效)。

5 用>=替换>

    如一个表有100万记录,一个数值型字段A,

      A=0时,有30万条;

      A=1时,有30万条;

      A=2时,有39万条;

      A=3时,有1万记录。

      那么执行 A>2 与 A>=3 的效果就有很大的区别了,因为 A>2 时,

      ORACLE会先找出为2的记录索引再进行比较,

      而A>=3时ORACLE则直接找到=3的记录索引。

6 用NOT EXISTS/EXISTS 替换 NOT IN / IN

NOT IN / IN不能应用表的索引

7 LIKE操作符(大数据的全文检索使用luncene)(solr)

    因为使用like不当,会导致性能问题,原因是like在左右两边都有

    %的时候,不会使用索引。

       

    如LIKE '%5400%' 这种查询不会引用索引而是全表扫描,

    而LIKE 'X5400%' 则会引用范围索引。

8 避免在索引列上使用计算和函数,这样索引就不能使用  

举例:  sal为索引列

         低效:

         SELECT … FROM  DEPT  WHERE SAL * 12 > 25000;

         高效:

         SELECT … FROM DEPT WHERE SAL > 25000/12;

         2.6 用UNION-ALL 替换UNION,

         因为UNION-ALL不会过滤重复数据而且不会自动排序,所执行效率要快于UNION。

 

 9 减少访问数据库的次数,可以使用缓存,分段提交等处理

举例:如果批量删除多条数据,可以用  delete  from tableName where id in (1,2,3), 而不要用多条delete语句进行删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值