我们有2个表 比如:用户表~还有订单表~数据非常大了!需要做分表了!例如:user1,user2,user3  订单表1,订单表2,订单3 这样join的话!肯定是非常慢的!慢咱先不说 而开发部经理 说 他还不想让程序员 看到分表!就是想让程序员对一个表 进行操作对程序员来说,就一个表,但实际物理存储的,却是多个表,
这个问题怎么解决啊??

解决方案 »

  1.   

    不建议使用这种分表。
    你可以直接使用MYSQL中的分区表。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
    18. 分区
    18.1. MySQL中的分区概述
    18.2. 分区类型
    18.2.1. RANGE分区
    18.2.2. LIST分区
    18.2.3. HASH分区
    18.2.4. KEY分区
    18.2.5. 子分区
    18.2.6. MySQL分区处理NULL值的方式
    18.3. 分区管理
    18.3.1. RANGE和LIST分区的管理
    18.3.2. HASH和KEY分区的管理
    18.3.3. 分区维护
    18.3.4. 获取关于分区的信息
      

  2.   

    回楼上
    “不建议使用这种分表。
    你可以直接使用MYSQL中的分区表。”MYSQL的分区表,比如我的订单表,按时间分区了,每个月一个区,这样我对订单表进行查询的时候,如果WHERE字段是时间,那么此时的查询会从相应的分区里去查询,获得更好的效率。但是如果我查询不是按时间,而是按客户编号查询,此时用的就是客户编号的索引,或者是全表扫描了,此时的分区和未分区是没有区别的。我帖子就是水平拆分的意思。
    昨天看书上说可以用MYSQL的合并表来处理,Merge Table,没实际操作过。
      

  3.   

    的确如此。但如果你按用户分表了,然后使用merge 引擎,同样如果你打算按时间查询的时候也会面临同样的问题啊。关于merge 存储引擎并不复杂,MYSQL只不过是通过一个FRM文件将相同结构不同的表做了个union all 的视图。
    至于如何实现在帮助手册中有例子,你可以参考一下。