zoukankan      html  css  js  c++  java
  • MySQL操作的一些优化

      1.用于不要使用select * from table xxx。

       需要查询哪些列就在语句中指明,一个表结构复杂时,可能会有上百列,使用*来查询时会造成很大的浪费。

      2.选择合适的属性及大小

         例如邮政编码使用char(6)就要比varchar(255)合适的多,省份、性别定义为enum也会提高效率。

           3.使用join来代替子查询

       原因是MySQL将不用创建临时表来完成2步操作。

       select  name,age from a where id not in (select id from b);可以用下面的语句代替:

         select name,age from a left join b on a.id = b.id where b.id is null;

           4.有索引的字段不要使用函数,会使索引失效

       select id,times from count where total /7<24;应该改为:

         select id,times from count where total<24*7;

      5.使用explain来判断语句的效率

      6.最左原则,(a,b)做联合索引时,where a = ?时会使用索引,where b = ?时不会使用索引。

         (a,b,c)做联合索引时,where a = ?and b = ?时会使用索引,where b = ?and c = ?时不会使用索引。

      7.使用like时,开头不要使用%,否则索引会失效。应该使用like ‘abc%’而避免like ‘%abc%’。

      8.MySQL的一些操作将会产生临时表,这些操作应该避免:

       1>group by一个无索引的列,就会产生临时表

         使用join时,group by任何列都会产生临时表,order by也是一样的

       2>distinct非索引列会产生临时表

          3>可以使用explain查看extra字段,如果是filesort就说明使用了临时表。说明MySQL已经无法通过索引来排序,需要额外的空间来排序。

      9.向一张表插入若干条数据:

         insert into table(column1,column2,column3) values(1,1,1),(2,2,2),...(n,n,n);

      10.很多的语句一次执行,批处理,减少建立连接的次数

  • 相关阅读:
    InnoDB和MyISAM区别总结
    jquery判断checkbox是否被选中
    手机网站重构经验分享(S60V3篇)
    域名A记录、MX记录、CNAME、TTL
    ubuntu apache2配置详解(含虚拟主机配置方法)
    IP分片攻击
    Linux+Apache+Mysql+PHP典型配置
    apache配置优化测试
    PHP 正则表达式资料
    人人网UGC技术广播站
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/4356579.html
Copyright © 2011-2022 走看看