MYSQL优化

SQL优化问题一般指对查询性能的优化。

建立索引是优化查询速度的重要途径。

Mysql的索引使用BTree(Balance Binary Tree,平衡二叉树。还有二叉树等知识,简单了解)的结构。

索引是把双刃剑,坏处在于占用空间,以及在增删改表时,由于索引也需要维护,增加了数据库的负担。

什么时候适合建立索引呢?

1:在经常需要查询的列上,创建索引加快搜索速度。

2:能用主键去查询,就使用主键去查询。

4:在经常需要排序的列上,建立索引加快排序速度。因为索引是已经排序了的。

5:在经常使用在Where字句中的列上建立索引,加快条件的判断速度。

 

优化点:

1:对查询进行优化,尽量避免全表扫描。比如:count(*)、like。首先考虑在where以及order by设计到的列上建立索引。

其中,like的全模糊查询:%...%以及左模糊:%...是不使用索引的。而右模糊使用索引:...%。

2:尽量避免在where子句中对字段进行null判断。因为null不会添加到索引中,所以对null进行判断不会使用索引。可以在建表时对于可能为空的列,赋默认值。

3:在where字句中避免使用!=或者<>,它们不走索引,使用全表扫描。

4:尽量避免在where字句中使用or来连接条件。它也不走索引,全表扫描。可以把or换用union all。

    比如:select id from t where num = 10 or num = 20  优化为:

        select id from t where num = 10 union all select id from t where num = 20;

5:in和not in也要慎用,可能会导致全表扫描。可以使用between and来代替in

6:在where字句中的字段进行表达式的操作,因为字段改变了,不会走索引。比如:

    select id from t where num/2=100可以优化为select id from t where num = 100*2

还有很多。使用时具体查阅资料。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值