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