У меня есть таблица с 2 миллионов записей на данный момент, она будет увеличиваться на 0,05 млн записей в день, так что я хочу оптимизировать этот запросSQL Server - Оптимизировать этот запрос с миллионами записей
Select * from Forex where Id in
(SELECT MAX(Id) FROM Forex GROUP BY Symbol having Symbol in
(Select Distinct Symbol from Forex))
У меня есть создать некластеризованный индекс поэтому время, затраченное на этот запрос, составляет 673 миллисекунды. Я изменил запрос к
Select * from Forex where Id in
(SELECT MAX(Id) FROM Forex GROUP BY Symbol having Symbol in
('AUDCAD','AUDCHF','AUDJPY','AUDNZD','AUDUSD','CADCHF','CHFJPY',
'EURAUD','EURCAD','EURCHF','EURGBP','EURJPY','EURNOK','EURNZD',
'EURUSD','GBPCAD','GBPCHF','GBPJPY','GBPUSD','NZDJPY','NZDUSD',
'USDCAD','USDCHF','USDJPY','USDNOK','USDSEK'))
Теперь потраченное время 391milliseconds
Можно ли сделать меньше, чем 100milliseconds? Или Некоторые одна помогают оптимизировать этот запрос
Почему не будет: 'Select * от Forex где Id в (SELECT MAX (Id) FROM FOREX GROUP BY Symbol) 'Работа для вас? –
'FROM Forex GROUP BY Symbol with Symbol in (Выбрать отличительный символ от Forex))' кажется бессмысленным. Почему это предложение 'IN' есть? У вас есть отдельная таблица с отдельными символами, которые вы можете использовать? –
Кроме того, какие СУБД вы используете? –