SQL Server:按所有列分组

时间:2018-08-27 06:37:07

标签: sql-server

我有一个表,该表包含16列,并有超过一百万条记录(每月大约一次批量添加约200k)。

类似这样的东西:

<template>
  <div class="ion-page"> <!-- apply the "ion-page" class -->
    <ion-header>
      <ion-toolbar color="primary">
        <ion-title>Over TRINL</ion-title>
      </ion-toolbar>
    </ion-header>
    <ion-content>
      <div class="padding">
        <div v-html="legacySystemHTML"></div>
      </div>
    </ion-content>
  </div>
</template>

大多数记录是唯一的,但是有重复项。 我需要在此表上创建一个视图,以汇总这些重复的行,并考虑每一列。 记录汇总后,我需要显示最后一个数字列的总和。 例如,我的视图需要汇总记录1和4。 预期结果是(请注意SUM为50(10 + 40)):

+----+------+------+-----+--------+----------------+
| Id | Col2 | Col3 | ... | Col 15 | Numeric Column |
+----+------+------+-----+--------+----------------+
|  1 | xxx  | xxx  | ... | xxx    |             10 |
|  2 | yyy  | yyy  | ... | yyy    |             20 |
|  3 | zzz  | zzz  | ... | zzz    |             30 |
|  4 | xxx  | xxx  | ... | xxx    |             40 |
+----+------+------+-----+--------+----------------+

我通过以下查询完成了此操作:

+------+------+-----+--------+-----------------------+------------------------------+
| Col2 | Col3 | ... | Col 15 | Sum Of Numeric Column | Amount Of Aggregated Records |
+------+------+-----+--------+-----------------------+------------------------------+
| xxx  | xxx  | ... | xxx    |                    50 |                            2 |
| yyy  | yyy  | ... | yyy    |                    20 |                            1 |
| zzz  | zzz  | ... | zzz    |                    30 |                            1 |
+------+------+-----+--------+-----------------------+------------------------------+

此视图将作为其他视图的基础视图,这些视图需要汇总数据。这意味着它需要非常快。我的问题很简单:知道该视图需要将数据提供给其他视图,这是走的路吗?有没有一种方法可以优化此查询?我可以安排一些带有索引的东西吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

根据我的说法,您的查询已经过优化,不需要任何进一步的优化。使用CTE只会降低您的性能。

答案 1 :(得分:1)

不确定,但是您的想法是您创建2个CTE,并且仅在需要它们时才计算它们。您可以对此进行测试并将其与您自己的查询进行比较。

List.get