合理优化数据库表结构提高项目执行效率[数据库设计]
2016-09-18 16:17
633 查看
数据库表设计优化:
有时为了提高数据库效率,可适当考虑反三范式,适当添加冗余字段,减少多表去关联查询。
使用索引:
2.1 数据库表设计时要合理的去使用普通索引、主键索引、唯一索引、全文索引以及复合(组合)索引。
2.2 何时创建索引:
(1) 较频繁的作为查询条件的字段;
(2) 唯一性太差的字段(如性别/状态字段等),即使我们频繁作为查询的条件,匀不适合创建索引;
(3) 数据更新非常频繁的字段(如统计平台当前的在线人数字段/商品的销售数量字段等)是不适合创建索引。
2.3 具体索引的使用请查看: http://yaowusheng.blog.51cto.com/11020801/1853754
注意: 创建索引是需要开销的,会占用一定的磁盘空间; 索引数据牵移难度大;为了维护索引文件,会导致增、删、改操作变慢,请勿过度使用索引,合理使用索引至关重要。
3.选择合适的MySQL存储引擎:
3.1 myisam储存引擎
如果表对事务要求不高,同时是以查询和添加为主的,考虑myisam储存引擎(如bbs的发帖表和回复表);
3.2 innodb储存引擎
对事务要求高,保存的数据都是重要的数据,建议使用innodb储存引擎(如账号表、订单表等重要的表);
3.3 memory储存引擎
数据变化频繁,不需要入库,同时又频繁的查询和修改,可考虑使用memory储存引擎(注意:插入的数据不会被持久化到磁盘空间,只是临时保存到了内存中,关闭了数据就会丢失);
有时为了提高数据库效率,可适当考虑反三范式,适当添加冗余字段,减少多表去关联查询。
使用索引:
2.1 数据库表设计时要合理的去使用普通索引、主键索引、唯一索引、全文索引以及复合(组合)索引。
2.2 何时创建索引:
(1) 较频繁的作为查询条件的字段;
(2) 唯一性太差的字段(如性别/状态字段等),即使我们频繁作为查询的条件,匀不适合创建索引;
(3) 数据更新非常频繁的字段(如统计平台当前的在线人数字段/商品的销售数量字段等)是不适合创建索引。
2.3 具体索引的使用请查看: http://yaowusheng.blog.51cto.com/11020801/1853754
注意: 创建索引是需要开销的,会占用一定的磁盘空间; 索引数据牵移难度大;为了维护索引文件,会导致增、删、改操作变慢,请勿过度使用索引,合理使用索引至关重要。
3.选择合适的MySQL存储引擎:
3.1 myisam储存引擎
如果表对事务要求不高,同时是以查询和添加为主的,考虑myisam储存引擎(如bbs的发帖表和回复表);
3.2 innodb储存引擎
对事务要求高,保存的数据都是重要的数据,建议使用innodb储存引擎(如账号表、订单表等重要的表);
3.3 memory储存引擎
数据变化频繁,不需要入库,同时又频繁的查询和修改,可考虑使用memory储存引擎(注意:插入的数据不会被持久化到磁盘空间,只是临时保存到了内存中,关闭了数据就会丢失);
相关文章推荐
- 怎样的数据库设计才能提高数据库执行效率---数据库设计篇
- 优化sql语句提高oracle执行效率
- 合理设计数据的格式能大幅提高效率和缩短程序代码
- [转] 效率优先 适度设计——网盟投放平台体验优化项目总结
- 问:当前计算机系统一般会采用层次结构存储数据,请介绍下典型计算机存储系统一般分为哪几个层次,为什么采用分层存储数据能有效提高程序的执行效率?
- 效率大提高:数据库设计的14个技巧
- sql查询优化(一),not in及详细讲解提高数据库查询效率
- 如何优化JAVA代码及提高执行效率
- 优化innerHTML操作(提高代码执行效率)
- 怎样的sql语句才能提高数据库执行效率---索引篇
- java提高数据库访问效率代码优化
- 数据库设计的14个技巧及提高运行效率
- 在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。
- 优化innerHTML操作(提高代码执行效率)
- 网盟投放平台体验优化项目总结――效率优先 适度设计
- MySQL 联合索引与Where子句的优化 提高数据库运行效率
- 如何提高asp的SQL的执行效率提高数据库读取速度
- (初级)善用PowerDesigner提高数据库设计效率
- mysql处理上百万条的数据库如何优化语句来提高处理查询效率
- 软件项目管理:通过合理的团队组合提高团队协作效率