大量数据的设计小技巧

1:创建分区数据库

 随着表的增大,对它的维护也更加困难。在很是大的数据库中,能够经过把一个大表的数 据分红多个小表来大大简化数据库的管理活动。例如,能够根据表中的部门或产品值把一个表 分红独立的小表。 注意分分区只对拥有并安装了分区选项的企业是可用的。 当把一个大表分红若干小表时,能够规定一些范围值供数据库使用,这些称做分区 ( p a r t i t i o n )的小表比大表的管理更加简单。例如,能够彻底删除( t r u n c a t e )一个分区的数据而不会 删除其余分区中的数据。O r a c l e将把分区表看做一个大表,但能够把这些分区做为一些独立的对 象来管理。 分区还能够改善应用性能。因为优化器将知道做为分区基础使用的范围值,因此它在访问 表时就能够只使用特定的分区直接查询。由于在查询过程当中只浏览少许数据,天然就改善了查 询性能。 除了表外,也能够对索引进行分区,一个分区索引的分区中的范围值能够与索引表使用的 范围相匹配,这种状况的索引叫做局部索引(local index)。若是索引分区不能与表分区的值范围 相匹配,则该索引就叫做全局索引(global index)。 在O r a c l e 8 i中,可以细分分区,建立子分区。例如,能够先根据一组值分割一个表,而后再 根据另外一种分割方法分割分区。在O r a c l e 9 i中,除了范围分区与哈希分区以外,还能够建立目录 分区(list partitions)。有关分区、子分区、局部索引和全局索引的管理问题。
 
2: 主要为了防止遍历表查询。
好比 LEFT JOIN, RIGHT JOIN 。这些查询若是能用冗余避免则应尽力避免。
INNER JOIN 则不用担忧了。
并且表设计的时候应当尽可能避免出现 LEFT JOIN 。
 
3:减小表关联,可增长冗余字段,经过空间来换时间
假如一个论坛库中有用户信息表tbUsers有下列字段 user_id(用户信息编号),user_name(用户名),user_nick(用户昵称) 贴子表tbTopics tpic_id(贴子信息编号),tpic_title(贴子主题),tpic_content(贴子内容),user_id(用户编号) 在实际的贴子显示过程当中,咱们要在贴子中显示用户昵称时,都是经过tbTopics表中的user_id和tbUsers表进行关联来获取user_nick信息。 上面的两个表的表结构设计根据设计范式不存在问题,可是若是这个论坛的访问量大的话,表的关联的代价就出来了,由于两表关联比访问一个表的代价要大。 所以,咱们能够采起在tbTopics表中增长一个冗余字段user_nick,这样显示贴子时再也不须要和表tbUsers进行关联了即SELECT * FROM [tbTpocs]便可,不须要SELECT t.*,u.user_nick FROM tbTpoics t LEFT JOIN tbUsers u ON t.user_id=u.user_id来显示获取贴子数据进行显示.
相关文章
相关标签/搜索