У меня есть база данных Sql-Server-2008, на которую я запрашиваю, на регулярной основе которой было более 30 миллионов записей (радость!). К сожалению, эта база данных не может быть радикально изменена, поскольку она все еще используется для R/D.Медленные SQL-запросы, таблица заказов по дате?
Когда я запрашиваю из этой базы данных, он принимает FOREVER. Под этим я подразумеваю, что я не был достаточно терпелив, чтобы ждать результатов (через 2 минуты я должен отменить, чтобы избежать блокировки отдела R/D). Даже если я использую короткий диапазон дат (более нескольких месяцев), в принципе невозможно получить от него какие-либо результаты. Я запрашиваю требования от 4 столбцов и, к сожалению, должен использовать внутреннее соединение для другой таблицы (мне сказали, что это очень дорого, с точки зрения эффективности запросов, но это неизбежно). Эта внутренняя объединенная таблица имеет менее 100 тыс. Записей.
Что мне было интересно, можно ли организовать таблицу, чтобы она по умолчанию была упорядочена по дате, чтобы уменьшить количество результатов, которые она должна выполнить для поиска?
Если это невозможно, могу ли я что-нибудь сделать, чтобы сократить время запроса? Есть ли другая полезная информация, которая могла бы помочь мне придумать решение?
Я включил образец запрос, который я использую:
SELECT DISTINCT N.TestName
FROM [DalsaTE].[dbo].[ResultsUut] U
INNER JOIN [DalsaTE].[dbo].[ResultsNumeric] N
ON N.ModeDescription = 'Mode 8: Low Gain - Green-Blue'
AND N.ResultsUutId = U.ResultsUutId
WHERE U.DeviceName = 'BO-32-3HK60-00-R'
AND U.StartDateTime > '2011-11-25 01:10:10.001'
ORDER BY N.TestName
Любая помощь или предложения приветствуются!
Вам нужен план объяснений или, по крайней мере, сообщите нам, какие поля индексируются. –
У вас есть индекс или что-нибудь в поле, которое вы заказываете, включая TestName? – msarchet