Fala pessoal, Antes de lerem esse post, caso ainda não tenham lido os anteriores, sugiro que façam para seguirem a linha de raciocínio: https://www.fabriciolima.net/blog/2017/12/11/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-1/ https://www.fabriciolima.net/blog/2017/12/18/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-2/ https://www.fabriciolima.net/blog/2018/01/08/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-3/ Pegando mais uma query no Traces de queries demoradas. Essa query está demorando 18 segundos e fazendo um número absurdo de leituras na tabela SF2090. Query:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
SELECT A1_COD , A1_LOJA , A1_NOME , F2_DOC , F2_SERIE , CONVERT(DATE, F2_EMISSAO) AS F2_EMISSAO , ZZB_VOLUME , SA4.A4_COD , SA4.A4_NOME , SA1.A1_END , SA1.A1_COMPLEM , SA1.A1_BAIRRO , SA1.A1_EST , SA1.A1_MUN , SA1.A1_CEP , A1_CGC , SA1.A1_TEL , SA1.A1_DDD , A1_EMAIL , ZZB.ZZB_RASTRO , A4_YSERVIC , SF2.F2_VALBRUT , SF2.F2_VOLUME1 , VT1_API , VT1_ORDID , VT1_SEQUEN , F2_PBRUTO * 1000 F2_PBRUTO FROM SF2090 SF2 JOIN SA1040 SA1 ON A1_FILIAL = ' ' AND SA1.D_E_L_E_T_ = ' ' AND SA1.A1_COD = SF2.F2_CLIENTE AND SA1.A1_LOJA = SF2.F2_LOJA JOIN SA4090 SA4 ON A4_FILIAL = ' ' AND SA4.D_E_L_E_T_ = ' ' AND SA4.A4_COD = SF2.F2_TRANSP JOIN ZZB090 ZZB ON ZZB_FILIAL = '01' AND ZZB.D_E_L_E_T_ = ' ' AND ZZB.ZZB_DOC = SF2.F2_DOC AND ZZB.ZZB_SERIE = SF2.F2_SERIE JOIN SC5090 SC5 ON C5_FILIAL = '01' AND SC5.D_E_L_E_T_ = ' ' AND SF2.F2_DOC = SC5.C5_NOTA AND SF2.F2_SERIE = SC5.C5_SERIE LEFT JOIN VT1090 VT1 ON VT1_FILIAL = '01' AND VT1.D_E_L_E_T_ = ' ' AND SC5.C5_NUM = VT1.VT1_NUMPED OUTER APPLY ( SELECT TOP 1 * FROM VT4090 VT4 WHERE VT4_FILIAL = '01' AND VT4.D_E_L_E_T_ = ' ' AND VT4.VT4_ORDID = VT1.VT1_ORDID AND VT4_EMPFOR + VT4_FILFOR = '23234' ) VT4 WHERE SF2.F2_FILIAL = '01' AND SF2.D_E_L_E_T_ = ' ' AND SF2.F2_TIPO = 'N' AND SF2.F2_EMISSAO >= '20170315' AND SF2.F2_TRANSP IN ( '34534534', '34534534', '3453454' ) AND ZZB.ZZB_PLP = ' ' ORDER BY ZZB.ZZB_RASTRO DESC , F2_DOC; |
Leituras:
|
Table 'VT1090'. Scan count 0, logical reads 0 Table 'SA1040'. Scan count 0, logical reads 0 Table 'SF2090'. Scan count 1168821, logical reads 3725643 Table 'SC5090'. Scan count 1, logical reads 4316 Table 'ZZB090'. Scan count 1, logical reads 149 Table 'SA4090'. Scan count 1, logical reads 13 SQL Server Execution Times: CPU time = 15906 ms, elapsed time = 18008 ms. |
[…]