我有一个看起来像这样的表(简化):
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
当在具有真实值的真实表上调用此查询时,似乎存在两个瓶颈(尤其是“哈希匹配(聚合)”):
现在需要大约7秒钟才能显示将近20'000行,如果它自己被消耗掉就可以了,但是问题是当其他视图调用它时。确实确实降低了性能。