数据库应用优化

来源:互联网 发布:淘宝运营 策划 编辑:程序博客网 时间:2024/05/21 19:40

1 基本语句的优化

     原则一:尽量避免在列上进行运算,这样会导致索引失效

select * from t where year(d)>=2011

    优化为

        select * fom t where d >= '2011-01-01'

    原则二:使用JOIN时,应该用小结果集驱动大结果集。同时把复杂的JOIN查询拆分成多个query。  因为join多个表的时候,可能导致更多的锁定和堵塞。 

    原则三:注意like模糊查询的使用,避免 %%。

        select * from t where name like '%de%'

   优化为

       select * form t where name>='de' AND name<'df'                                                                                                                                                                                                           原则四:仅列出需要查询的字段,对速度不会有明显影响,主要考虑节省内存

     原则五:使用批量插入语句节省交互

     原则六:limit基数比较大的时候使用between

     原则七:不要使用rand函数获取多条随机记录

     原则八:避免使用null

     原则九:不要使用count(id),而应该是count(*)

     原则十: 不要做无谓的排序操作,而应尽可能的在索引中完成排序              

 2 索引与性能分析

    set @@profiling=1;

    select * from wangkai

   show profiles;

    另外一种方式:explain +sql语句

 3 服务器端和配置的优化

    一:存储引擎的选择方法

        采用myisam引擎

             读写比D>100:1,并发不高,不需要事物,表数据量小,硬件资源有限,

        采用innodb引擎

            读写比比较小,频繁更新大字段, 表数据量超过1000万,并发高,安全性和可用性要求高

        采用memory引擎

            有足够的内存,对数据一致性要求不高,需要定期归档的数据

  二  MySQL服务器调整优化措施

             关闭不必要的二进制日志和慢查询日志,适度使用query cache,增加mysql允许的最大连接数,对myIasm表适当增加key_buffer_size;