数据库性能优化

来源:互联网 发布:淘宝返利最高返多少 编辑:程序博客网 时间:2024/05/16 18:44

字段设计

  1. 尽量使用数字型,比字符型快;如果0-200,使用tinyint unsigned更好
  2. 尽量不要使用NULL,除非必要使用NOT NULL + DEFAULT替代
  3. 少用text和image,二进制字段的读写比较慢
  4. 使用int代替varchar(15)来存储IP地址
  5. 使用MySQL内建的类型(date,time,datetime等)而不是字符串来存储日期和时间
  6. 建议只分配真正需要的空间
  7. 考虑使用BIGINT代替DECIMAL,将需要存储的值根据小数的位数乘以相应的倍数即可

 

sql优化

  1. explain优化sql
  2. limit获取唯一行,避免扫描整张表
  3. 避免使用select*
  4. 保证连接的索引是相同的类型
  5. 不要使用by rand()命令
  6. 采用join来替换子查询
  7. 小心使用通配符

 

索引

  1. 根据使用频率决定哪些字段需要建立索引,选择经常作为连接条件、筛选条件、聚合查询、排序的字段作为索引的候选字段。
  2. 把经常一起出现的字段组合在一起,组成组合索引,组合索引的字段顺序与主键一样,也需要把最常用的字段放在前面,把重复率低的字段放在前面。
  3. 一个表不要加太多索引,因为索引影响插入和更新的速度。

 

其他:

  1. MyISAM和InnoDB的选择
  2. MyISAM不支持事务,InnoDB是事务类型的存储引擎
  3. MyISAM只支持表级锁,BDB支持页级锁和表级锁默认为页级锁,而InnoDB支持行级锁和表级锁默认为行级锁
  4. MyISAM引擎不支持外键,InnoDB支持外键
  5. MyISAM引擎的表在大量高并发的读写下会经常出现表损坏的情况

对于count()查询来说MyISAM更有优势;InnoDB是为处理巨大数据量时的最大性能设计,它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。

 

 

 

 

http://ms.csdn.net/geek/94980

http://ms.csdn.net/geek/90776

http://ms.csdn.net/geek/92008

 

http://www.cnblogs.com/easypass/archive/2010/12/08/1900127.html

http://www.mahaixiang.cn/znseo/820.html

http://www.2cto.com/database/201404/291438.html

0 0
原创粉丝点击