mysql常见的优化总结

笔者工作中常见的优化总结:

  1. 尽量避免在列上进行运算,这样会导致索引失效; select * from t where YEAR(d) >=2011;优化为:select * from t where d>="2011-01-01";
  2. 使用JOIN时,应该用小结果集驱动大结果集.同时把复杂的JOIN查询拆分成多个Query,因为JOIN多个表时,可能导致更多的锁定和堵塞.尽量避免像这样的使用:select * from a JOIN b ON a.id=b.id
        LEFT JOIN c ON c.time=a.date
        LEFT JOIN d ON c.pid=b.aid
        LEFT JOIN e ON e.cid=a.did;
  3. 注意LIKE 模糊查询的时候,避免 %%,例如:select * from t where name LIKE "%de%";优化为:select * from t where name >="de" AND name <="df";
  4. 仅仅列出需要查询的字段,这对速度不会有明显的影响,主要考虑节省内存;
  5. 使用批量插入语句节省交互.insert into t(id,name) VALUES(1,"a");
        insert into t(id,name) VALUES(2,"b");
        insert into t(id,name) VALUES(3,"c");优化为:INSERT INTO t(id,name) VALUES(1,"a"),(2,"b"),(3,"c");
  6. limit的基数比较大的时候使用between ,例如:select * from article as article order by id limit 1000000,10;优化为:select * from article where id between 1000000 and 1000010 order by id;
  7. 不要使用rand 函数获取多条随机记录.避免这么干:select * from table order by rand() limit 20;
  8. 避免使用 NULL;
  9. 不要使用count(id);而应该使用 count(*);
  10. 不要做无谓的排序操作,而应尽可能在索引中完成排序.

猜你喜欢

转载自blog.csdn.net/ziwenCSDN/article/details/80033866
今日推荐