mysql优化

作者: Gundy_ | 来源:发表于2016-12-22 10:10 被阅读75次

    MYSQL优化

    1. 为查询缓存优化你的查询
    2. EXPLAIN你的SELECT查询。根据结果给出分析相应的查询优化
    3. 当只要一行数据时使用LIMIT1,MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据。
    4. 为搜索字段建索引
    5. 在Join表的时候使用相当类型的数据,并将其索引
    6. 千万不要ORDER BY RAND()
    7. 避免 SELECT * 8. 永远为每张表设置一个ID,为数据库里的每张表都设置一个ID做为其主键,而且最好的是一个INT型的(推荐使用UNSIGNED),并设置上自动增加的AUTO-INCREMENT标志
    8. 使用ENUM而不是VARCHAR
    9. 从PROCEDURE ANALYSE()取得建议
    10. 尽可能的使用NOT NULL
    11. Prepared Statements,Prepared Statements可以检查一些你绑定好的变量,这样可以保护你的程序不会受到“SQL注入式”攻击。当然,你也可以手动地检查你的这些变量,然而,手动的检查容易出问题,而且很经常会被程序员忘了。当我们使用一些framework或是ORM的时候,这样的问题会好一些。
    12. 无缓冲的查询,mysql-unbuffered-query()发送一个SQL语句到MySQL而并不像mysql-query()一样去自动fethch和缓存结果。这会相当节约很多可观的内存,尤其是那些会产生大量结果的查询语句,并且,你不需要等到所有的结果都返回,只需要第一行数据返回的时候,你就可以开始马上开始工作于查询结果了。
    13. 把IP地址存成UNSIGNED INT
    14. 固定长度的表会更快,固定长度的表会提高性能,因为MySQL搜寻得会更快一些,因为这些固定的长度是很容易计算下一个数据的偏移量的,所以读取的自然也会很快。而如果字段不是定长的,那么,每一次要找下一条的话,需要程序找到主键。可能会浪费空间
    15. 垂直分割,“垂直分割”是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的。
    16. 拆分大的DELETE或INSERT语句,这两个操作是会锁表的,表一锁住了,别的操作都进不来了。
    17. 越小的列会越快
    18. 选择正确的存储引擎
    19. 用一个对象关系映射器(Object Relational Mapper)
    20. 小心“永久链接” mysql-pconnect()

    相关文章

      网友评论

        本文标题:mysql优化

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