SQL优化的一些方法

作者: lothar_cly | 来源:发表于2016-06-23 15:58 被阅读320次
    SQL优化的一些方法

    1.在查询过程中,尽量避免全表扫描,考虑在whereorder by涉及的列上建立索引。
    2.尽量避免在where子句中对字段进行NULL的判断,建议不使用NULL,因为在查询的时候NULL是不会通过索引来检索的,他会放弃使用索引而进行全表扫描。
    3.尽量避免查询条件中使用like关键字,像%…%%...这样的条件是没有办法使用索引的。使用的是全表扫描,还有就是由于匹配算法的关系,like的字段长度越大,模糊查询的效率越低。并且优化空间很小。
    4.不要在where子句中使用!=<>操作符。原因同上,放弃索引,使用全表扫描。可以使用or来修改。
    �6.or有时候也会导致全表扫描,一个字段有索引,一个字段上没有索引,在使用or的查询的时候也会导致全表扫描。
    7.避免对字段进行表达式操作或者函数操作。
    8.update操作,如果只更改1、2个字段的话,不要修改所有字段。否则频繁调用会引起明显的性能消耗,同时带来大量日志。
    9.连接的使用,在使用表join的时候,如果有分页的话,先分页在join。否者逻辑上的读写会很高,性能很差。当然要考虑分页前后的消息展示是否会因为join进行缺失。可能会导致两个操作方式显示的结果不一致。很有可能不一致。
    10.不带任何条件的count函数,会引起全表扫描?也就是说count(*)count(id)是有区别的么?不同MySQL的版本这个函数的性能不一样。
    11.�索引的类型(BTREE,RTREE,HASH,FULLTEXT)。索引也并不是越多越好,可能在查询的时候很方便,但是在插入和修改操作的时候,可能会出现索引重建的情况。所以索引的使用也要看具体的情况。索引太多了需要考虑哪些不常使用的索引是否有存在的必要,或者使用别的解决方法。
    12.拆分大的delete或者insert语句,可以使用批处理,同时这两个操作会出现锁表的情况。
    13.尽量避免使用大的事务,控制事务的粒度。能提高系统的并发能力。

    参考文章:[数据库SQL优化大总结之 百万级数据库优化方案]
    加上了部分自己的总结

    部分比较好用的MySQL的相关操作,简单记录

    设置终端MySQL的编码。
    set names"utf8";

    输出查询结果到文件
    into outfile '/tmp/a.csv'

    相关文章

      网友评论

      • eb33a16f9420:请教个问题,针对类似于性别这类字段,是否有必要加索引(整个表的数据量大概6000W左右,会经常使用到该字段与其他字段一起作为查询条件,而且会根据该字段为唯一条件进行数据删除),请赐教。
        eb33a16f9420: @lothar_cly 针对性别类的字段(唯一值大概有四十个,整张表数据库大概6000W),使用该字段作为唯一条件进行删除时,有什么比较好的处理方式,除了您上边提到的拆分法外。请赐教。
        lothar_cly:@易水若寒 性别字段 个人觉得是没有必要检索的,值唯一性太小,假如一半是男一半是女 建个索引也就没有必要了。

      本文标题:SQL优化的一些方法

      本文链接:https://www.haomeiwen.com/subject/uutodttx.html