Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: cArqTab :: Otimizando a Abertura do Sistema: Como a Escolha do Método de Carregamento Afeta o Desempenho

_Créditos da imagem: Gerada com auxílio do ChatGPT_ # cArqTab :: Como o carregamento de informações em uma variável pode tornar lenta a abertura do sistema TOTVS Microsiga Protheus --- # Comparando LoadFromDBQuery e LoadFromDBWhile: Vantagens e Desempenho No desenvolvimento de soluções para o TOTVS Microsiga Protheus, otimizar o tempo de execução das funções é essencial, especialmente quando lidamos com grandes volumes de dados. Neste artigo, vamos analisar a diferença de desempenho entre os métodos `LoadFromDBQuery` e `LoadFromDBWhile`, utilizando os tempos de execução para demonstrar a vantagem de cada abordagem. ## Contexto do Teste Para avaliar o desempenho, executamos dois procedimentos distintos: - **U_TSTArqTabLoadDBQuery**: utiliza a função `LoadFromDBQuery`. - **U_TSTArqTabLoadDBWhile**: utiliza a função `LoadFromDBWhile`. Os comandos foram executados no ambiente Cygwin, e PowerShell e os tempos foram medidos da seguinte forma: *Cygwin ```bash $ time C:/totvs/tst/sma

BlackTDN :: Transact-SQL

 

----Select Database
USE ERPProducao
GO
----Create new table and insert into table using SELECT INSERT
SELECT CTT.CTT_FILIAL AS I3_FILIAL
,CTT.CTT_CUSTO AS I3_CUSTO
,CTT.CTT_DESC01 AS I3_DESC
,CTT.R_E_C_N_O_
,CTT.D_E_L_E_T_
INTO PRI_TMP ---New Table (target)
FROM CTT010 CTT ---(source)
WHERE CTT.D_E_L_E_T_ = ' ' ---(conditional)
;
----Verify that Data in TestTable
SELECT PRI.*
FROM PRI_TMP AS PRI
ORDER BY PRI.I3_FILIAL
,PRI.I3_CUSTO
;
------ Truncate Table
TRUNCATE TABLE PRI_TMP
;
------ Insert New Rows
INSERT INTO PRI_TMP (I3_FILIAL, I3_CUSTO, I3_DESC,R_E_C_N_O_,D_E_L_E_T_)
SELECT CTT.CTT_FILIAL AS I3_FILIAL
,CTT.CTT_CUSTO AS I3_CUSTO
,CTT.CTT_DESC01 AS I3_DESC
,CTT.R_E_C_N_O_
,CTT.D_E_L_E_T_
FROM CTT010 CTT
WHERE CTT.D_E_L_E_T_ = ' '
;
----Verify that Data in TestTable
SELECT PRI.*
FROM PRI_TMP AS PRI
ORDER BY PRI.I3_FILIAL
,PRI.I3_CUSTO
;
----Update Field
UPDATE PRI_TMP SET PRI_TMP.I3_DESC = X.I3_DESC
FROM
(
SELECT CTT.CTT_FILIAL AS I3_FILIAL
,CTT.CTT_CUSTO AS I3_CUSTO
,CTT.CTT_DESC01 AS I3_DESC
,CTT.R_E_C_N_O_
,CTT.D_E_L_E_T_
FROM CTT010 AS CTT
) AS X
WHERE PRI_TMP.I3_FILIAL = X.I3_FILIAL
AND PRI_TMP.I3_CUSTO = X.I3_CUSTO
;
----Verify that Data in TestTable
SELECT PRI.*
FROM PRI_TMP AS PRI
ORDER BY PRI.I3_FILIAL
,PRI.I3_CUSTO
;
----Clean Up Database
DROP TABLE PRI_TMP
GO


Pri. Eis as instruções (todas juntas e misturadas) que tentei te passar por telefone ontem (rs). Resolvemos de outra forma (Copia pra TXT delimitado, Altera com NotePad++ e Append via TXT delimitado)


[]s
иαldσ dj

Comentários

Postagens mais visitadas