У меня есть хранимая процедура, которую я называю поLinq для SQL, исполняющих хранимая процедура очень медленно
Int32 siteID = 1;
DateTime startDate date;
DateTime endDate date;
var result = this.datacontext.GetSummary(siteID, startDate, endDate);
Это выполняет очень медленно с помощью LINQ, но в SSMS это очень быстро.
Когда я изменяю SP, чтобы принимать только дату начала и в СП Создание ENDDATE по:
DECLARE @EndDate date
SET @EndDate = DATEADD(yy,1,@StartDate)
, а затем выполнить, как показано ниже:
var result = this.datacontext.GetSummary(siteID, startDate);
Запрос очень быстро снова , Я передаю точные значения, какими будут EndDate.
Кто-нибудь видел что-либо подобное. Запрос без конечной даты, прошедшей через выполнение, выполняется за 0 секунд. С датой окончания требуется 6 минут.
Любые предложения были бы весьма полезными.
Вы использовали утилиту трассировки SQL-сервера? Это даст вам представление о том, что происходит за кулисами. – Tarik
Я настоятельно рекомендую вам взглянуть на профилировщик sql. – Mostafa
Каковы значения для даты окончания? во втором случае вы устанавливаете дату окончания всего лишь 1 месяц спустя, что может потребовать нескольких записей, чтобы оно работало быстро. Но если вы устанавливаете дату окончания через несколько лет после даты начала, то она будет выполняться медленно в зависимости от количества строк для поиска. Вы также можете индексировать свой столбец даты. –