mi chiedevo quali fossero le migliori pratiche per la preparazione di una query in SQL con un valore dinamico, Diciamo che ho un valore (nvarchar (max))SQL Server e le prestazioni per le ricerche dinamiche
valore: "912.345.678 "
select * from AllData
where Number like '%912345678%'
valore: "Michael"
select * from AllData
where Name like '%Michael%'
valore: "Numero civico 10"
select * from AllData
where Address like '%Street number 10%'
Questo approuches sono un po 'lento in quanto la ricerca di un numero che ha 9 cifre sarebbe più veloce senza% come questo
select * from AllData
where Number like '912345678'
io uso un EDMX a effettuare una connessione a un database esterno in C#, come questo:
var Result = EDMXEntity.Entities.Where(x =>
(SqlFunctions.PatIndex("%" + Value.ToLower() +"%", x.Name.ToString().ToLower()) > 0)
|| (SqlFunctions.PatIndex("%" + Value.ToLower() +"%", x.Number.ToString().ToLower()) > 0)
|| (SqlFunctions.PatIndex("%" + Value.ToLower() +"%", x.Address.ToString().ToLower()) > 0)).Take(50).ToList();
Come posso aumentare le prestazioni?
Tutte le condizioni sono uguali. 'SqlFunctions.PatIndex ("% "+ Example.ToLower() +"% ", x.Name.ToString(). ToLower())> 0)' – Amit
'seleziona * da AllData dove Numero come '912345678'' è uguale a 'seleziona * da AllData dove Number = '912345678'' quindi sarà sempre più veloce. – Max
@Ammarmi scusa, ho aggiornato le condizioni. – BrunoMartinsPro