“哈希匹配(总计)”性能问题

时间:2019-03-22 23:36:01

标签: sql-server performance entity-attribute-value sql-server-2017

我有一个看起来像这样的表(简化):

Trabajador  fkDocumentoTipo numeroDocumento
1           1               doc_1_1
1           2               doc_1_2
2           1               doc_2_1
2           2               doc_2_2

我运行此查询以在一行中获取工作人员的所有值:

SELECT
    trabajador,
    MAX(CASE WHEN fkDocumentoTipo = 1 THEN numeroDocumento END) AS 'RG',
    MAX(CASE WHEN fkDocumentoTipo = 2 THEN numeroDocumento END) AS 'CPF',
    MAX(CASE WHEN fkDocumentoTipo = 3 THEN numeroDocumento END) AS 'TitulodeEleitor',
    MAX(CASE WHEN fkDocumentoTipo = 4 THEN numeroDocumento END) AS 'PIS',
    MAX(CASE WHEN fkDocumentoTipo = 5 THEN numeroDocumento END) AS 'CTPS',
    MAX(CASE WHEN fkDocumentoTipo = 6 THEN numeroDocumento END) AS 'Reservista',
    MAX(CASE WHEN fkDocumentoTipo = 7 THEN numeroDocumento END) AS 'CNH',
    MAX(CASE WHEN fkDocumentoTipo = 8 THEN numeroDocumento END) AS 'NIT',
    MAX(CASE WHEN fkDocumentoTipo = 11 THEN numeroDocumento END) AS 'RIC',
    MAX(CASE WHEN fkDocumentoTipo = 12 THEN numeroDocumento END) AS 'OC'
FROM dados_documento
GROUP BY trabajador

当在具有真实值的真实表上调用此查询时,似乎存在两个瓶颈(尤其是“哈希匹配(聚合)”): enter image description here

enter image description here

enter image description here

我在查询中使用的列上有索引: enter image description here

它们似乎维护得很好: enter image description here

现在需要大约7秒钟才能显示将近20'000行,如果它自己被消耗掉就可以了,但是问题是当其他视图调用它时。确实确实降低了性能。

  1. 是否有任何方法可以直接提高此查询的性能?
  2. 是否有任何方法可以提高此查询(包装在视图中)的性能,以便其他视图可以更快地使用它?

0 个答案:

没有答案