none
SQL Server如何依据另一张表分区? RRS feed

  • 问题

  • 比如有2张表A和B。

    A里面有个typeId

    B里面有个外键是A表生成的主键UserId

    B表数据量很大了,怎么能用A表中的typeId对B表进行分区?

    不知道这样可能实现吗?

    2014年1月30日 3:35

答案

  • 第一步,做个函数,根据UserId查出typeId

    第二步,用这个函数在B表里面做个PERSISTED 的计算列

    第三步,用这个计算列作为分区依据列


    想不想时已是想,不如不想都不想。

    • 已标记为答案 柯小南 2014年2月11日 12:32
    2014年2月3日 14:51
    版主

全部回复

  • Can't do that unless you add typeid in table b.
    2014年1月30日 4:26
  • 就像rmiao大侠说的,除非B表有typeId这一列,否则B表无办法根据A表的typeId列进行分区
    2014年1月30日 13:52
  • 第一步,做个函数,根据UserId查出typeId

    第二步,用这个函数在B表里面做个PERSISTED 的计算列

    第三步,用这个计算列作为分区依据列


    想不想时已是想,不如不想都不想。

    • 已标记为答案 柯小南 2014年2月11日 12:32
    2014年2月3日 14:51
    版主
  • 第一步,做个函数,根据UserId查出typeId

    第二步,用这个函数在B表里面做个PERSISTED 的计算列

    第三步,用这个计算列作为分区依据列


    想不想时已是想,不如不想都不想。

    这样会不会有性能问题?

    也就是PERSISTED列不参与外部的任何操作,只是专门作为分区的依据列是吗?

    2014年2月10日 7:35
  • 不知道B表是否跟A表的TYPEID列有关联,我个人觉得在B表添加TYPEID列是最好的,这样的方法实际上就是表字段的冗余

    在A表有TYPEID列,在B表也有TYPEID列

    2014年2月10日 7:42
  • 日常使用时性能问题不大。建计算列需要较长时间。

    其实跟你在B表加个TypeID列差不多。


    想不想时已是想,不如不想都不想。

    2014年2月13日 13:51
    版主