Zastanawiałem się, co było najlepsze praktyki dotyczące podejmowania zapytanie SQL z wartością dynamiczną, powiedzmy, że mam wartości (nvarchar (max))SQL Server i wydajność dla dynamicznych wyszukiwań
wartość: „912345678 "
select * from AllData
where Number like '%912345678%'
wartość: "Michael"
select * from AllData
where Name like '%Michael%'
o wartości: "Numer budynku 10"
select * from AllData
where Address like '%Street number 10%'
This approuches są nieco powolny ponieważ wyszukiwaniu numeru, który ma 9 cyfr byłoby szybciej bez% jak to
select * from AllData
where Number like '912345678'
używam do EDMX do nawiązać połączenie z zewnętrzną bazą danych w języku C#, na przykład:
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();
Jak mogę zwiększyć wydajność?
Twoje wszystkie warunki są takie same. 'SqlFunctions.PatIndex ("% "+ Przykład.ToLower() +"% ", x.Nazwa.ToString() ToLower())> 0)' – Amit
'wybierz * z AllData gdzie Liczba jak '912345678'' jest równa 'wybierz * z AllData gdzie Number = '912345678'', więc zawsze będzie szybciej. – Max
@Amit sorry sorry my bad, zaktualizowałem warunki. – BrunoMartinsPro