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.