It is currently 1 August 2021, 22:19 Advanced search

Riprendo un vecchio post

Domande e risposte su come utilizzare Instant Developer Foundation al meglio

Riprendo un vecchio post

Postby Federico » 26 May 2021, 13:51

Volevo aggiungere un paio di considerazioni relative ad un vecchio post bloccato per il quale era nata l'attività:
NPQ03217

il titolo era
SQL Server: Query Parametriche e Variabili

la causa nasceva da un problema di conversioni implicite

riporto un articolo dove viene trattato l'argomento
https://www.sqlshack.com/implicit-conve ... ql-server/

essendo alle prese con alcune ottimizzazioni eravamo incappati in questa cosa, risolta forzando la conversione a programma.

nelle procedure extra inde questo problema si innesca in certe condizione usando query parametriche non tipizzate.
riporto un ulteriore articolo.
https://www.dbdelta.com/addwithvalue-is-evil/

Mi cheidevo come sia la situazione nel codice generato da inde attualmente.
User avatar
Federico
 
Posts: 91
Joined: 7 December 2010, 16:25

Re: Riprendo un vecchio post

Postby Federico » 17 June 2021, 16:02

facendo f3 sulla videata

mi mostra il sorgente.
che riporto ad esempio

create view DENUNCIA1
(
CODICEDENREC,
PROGDENURECO,
DENODENURECO,
...
)
as select
A.CODXX as CODICEDENREC,
A.ProgrDenuncia as PROGDENURECO,
A.Denominazione as DENODENURECO,
...
from
Denuncia A
where (A.CODXX = " + IDL.CSql(MainFrm.CODICCASS, IDL.FMT_CHAR, MainFrm.DbObject.DBO()) + ")
and ...

si tratta di un pannello normaleissimo che effettua una query di ricerca
il campo chiave CODXX è di tipo char

la query che arriva al db ( microsoft sql )

/*
This query text was retrieved from showplan XML, and may be truncated.
*/

(@P1 int,@P2 int,@P3 int,@P4 int,@P5 varchar(5),@P6 varchar(5),@P7 nvarchar(255),@P8 nvarchar(255),@P9 nvarchar(255),@P10 nvarchar(255),@P11 nvarchar(255),@P12 nvarchar(255))
select A.CODXX as CODICEDENREC, A.ProgrDenuncia as PROGDENURECO, ......
from Denuncia A
where (A.CODXX = 'ABCD') and (A.StatoDenuncia <> 'X') and .....

order by A.AnnoDenuncia desc, A.PeriodoDenuncia desc, A.Denominazione

è soffre di un problema di conversione implicita che consuma cpu e rende inefficente l'uso degli indici previsti.

il parametro che viene passato nel pannello è una variabile globale

in passato avevamo visto che inserendo una conversione in stringa faceva girare bene il tutto.
questa cosa a parer mio merita un analisi attenta perche se risolta dal generatore di codice puo dare un boost a tutto. perlomeno nei casi in cui il problema è presente (chiavi di tipo testo non unicode)

proseguo l'indagine....
User avatar
Federico
 
Posts: 91
Joined: 7 December 2010, 16:25


Return to Tips & Tricks - Foundation

Who is online

Users browsing this forum: No registered users and 25 guests

cron