Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql查询性能-行数较少的宽表还是行数较多的窄表?_Sql_Performance - Fatal编程技术网

sql查询性能-行数较少的宽表还是行数较多的窄表?

sql查询性能-行数较少的宽表还是行数较多的窄表?,sql,performance,Sql,Performance,我想查询星型模式中的事实表 我需要捕获很多值,如总销售额、净销售额、区域销售额等,以组合其他两个值,即PK 我有两个选择: 一行有主键,一批列有总销售额、区域销售额等指标。 将度量作为一个维度,这样PK会更大-在行中会添加列度量。除了PK,只有一个值。因此,我将一行和多个度量值分解为许多行和一个度量值 插入和选择对性能有什么好处?如果您有一行包含所有值,则会出现争用问题,假设您同时进行插入/更新和读取 拥有一个宽表也意味着将来添加新的度量值要困难得多——它需要更改表模式,这将锁定表并导致其他问题

我想查询星型模式中的事实表

我需要捕获很多值,如总销售额、净销售额、区域销售额等,以组合其他两个值,即PK

我有两个选择:

  • 一行有主键,一批列有总销售额、区域销售额等指标。
  • 将度量作为一个维度,这样PK会更大-在行中会添加列度量。除了PK,只有一个值。因此,我将一行和多个度量值分解为许多行和一个度量值

  • 插入和选择对性能有什么好处?

    如果您有一行包含所有值,则会出现争用问题,假设您同时进行插入/更新和读取

    拥有一个宽表也意味着将来添加新的度量值要困难得多——它需要更改表模式,这将锁定表并导致其他问题


    您的
    SELECT
    性能应该是相似的,除非您在同一个查询中为同一个PK提取多个值,在这种情况下,更宽的表可能会更快一些。

    您的最低粒度级别是什么?当你提到区域销售和总净销售时,我觉得你可能混淆了度量和维度。例如:区域可能是销售事实的一个维度。

    我不认为争用是一个问题,因为我假设John正在谈论创建DW。@Maess-根据设置,您在构建过程中仍然可能存在争用,但是的,您是对的,这听起来像仓库是的,我正在创建DW,我想找到最好的解决方案,以实现良好的性能和维护。我给你们举了一个坏例子。衡量标准可以是折扣、总销售额、净销售额、成本等,而不是地区销售额。