优化查询

来源:互联网 发布:老年网络大学 编辑:程序博客网 时间:2024/05/21 07:04

  1. 使用查询缓存(在配置好查询缓存和频繁查询这条数据的情况下有效,一点执行insert,delete,update等改变数据的操作或者truncate,alter table、drop table改变表结构的操作查询缓存失效)速度,一般来说: drop> truncate > delete
  2. sql中不能使用now(),rand(),curdate,等即时行高和可变性高的函数(时间函数如果是php的程序,可以用php的函数代替)
  3. 使用EXPLAIN
  4. 使用ENUM代替VARCHAR
  5. 当只要一行数据时使用LIMIT 1
  6. 尽量少使用null默认值设置或者插入值
  7. 把ip存储成unsigned int(无符号整型)mysql可以使用INET_ATON() 来把一个字符串IP转成一个整形,并使用 INET_NTOA() 把一个整形转成一个字符串IP。在PHP中的函数 ip2long() 和 long2ip()
  8. 使用一个对象关系映射器(Object Relational Mapper),orm
  9. 在跨多个不同的数据库时使用UNION,或者UNION ALL
  10. 过show命令查看MySQL状态及变量,找到系统的瓶颈:
  11. mysql>show status //显示状态信息
  12. mysql>show varibales;
  13. mysql>show innodb status 
  14. mysql>show processlist
  15. 使用慢查询日志:
  16. 使用profiling分析查询:
  17. mysql>set profiling=1; //执行测试sql语句
  18. mysql>select * from a;
  19. mysql>show profiles\G;
  20. mysql>show profile for query 1;