在日常的开发工作中,除了JAVA相关的技术,打交道最多的就是MySQL数据库,当数据积累到一定程度,比如500W时就会难免出现一些慢sql,对数据库的优化方式有很多,比如通过增加合理的索引,今天我们来说下其中的垂直分表。
垂直分表:顾名思义就是将一张表纵向拆分成多张表,通过拆分后每行的字段数减少了,空间占用变小,当检索表数据时,一次IO就能从磁盘获取更多的数据到内存中,减少了IO次数,降低了响应时间。
拆分的一些原则:
举个例子:将我们的订单表拆分成订单表和订单扩展信息表,如下
order表
t_order_contact表
订单中的联系人信息是订单的扩展信息,而且不常访问,拆分后原订单表轻量了,更加原子化,效率也提升了。当我们需要同时获取订单与订单扩展信息时,不建议join方式,应分别查询然后通过程序去处理。