MySQL水平分表,分了很多...然后要统计count(*) 。大家有什么好的方法?

解决方案 »

  1.   

    select sum(cnt)
    from (
    select count(*) as cnt from table1
    union all
    select count(*) as cnt from table2
    union all
    select count(*) as cnt from table3
    union allunion all
    select count(*) as cnt from tableN
    ) t
      

  2.   

    现在有个情况是,要专门记录一个总数。例如增加一个会员,就要相应的记录某地区的会员总数。然后后续可能很多地方需要这个总数 做一些操作。如果会员特别多,成千上万。记录这个总数, 两种方法: 1,新建一个数据表,用某个字段来存储。2,用一个PHP文件,里面是一个数组。这两种方法哪种更快?
      

  3.   

    如果会员特别多,成千上万。
    如果这样,
    1)只放一个会员表,不分表,但你可以分区(关于分区,你可以参考MYSQL免费官方手册中的介绍)
    2)另设一张地区表 (areacode, areaName, memberCount) 然后在会员表上做触发器,新增,更新,删除时利用触发器来更新相关的areacode 对应的 memberCount