Torna al Thread

altro metodo in caso di join (lo dico per trinity così vede un'altra tecnica) è fare le ricerche sulle tabelle separate, prendere solo gli ID, e poi restituire i dati basandosi solo sugli ID, il tutto dentro una SP. Esempio: Voglio tutti gli utenti che ... (parametri) e che hanno scritto nella loro scheda che .... (altri parametri) DECLARE TABLE @IDutenti ( IDUtente int IDENTITY (1, 1) NOT NULL ) DECLARE TABLE @IDScheda ( IndexID int IDENTITY (1, 1) NOT NULL, IDUtente int not null ) INSERT INTO @IDutenti (IDUtente) SELECT DISTINCT CustomerID FROM [tblUtenti] c with (NOLOCK) WHERE <i PATHINDEX come esempio> INSERT INTO @IDScheda (IndexID, IDUtente) SELECT DISTINCT ISCheda, CustomerID FROM [tblChedaTecnica] c with (NOLOCK) WHERE <i PATHINDEX come esempio> SELECT C.* FROM @IDutenti U inner join @IDScheda S on U.IDUtente=S.IDUtente inner join tblUtenti C on C.IDUtente=U.IDUtente Order by ... ... questa SP è molto più veloce di una normale query in join e i filtri applicati su tutta la join Ma credo che a livello di SQL sai molto più esperto di me, quindi pongo questa soluzione sotto tuo esame per un commento. Altra domanda su SQL, ma dentro una WHERE la PATINDEX è più performante di LIKE?? mi pare di si.
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5