2013-07-19 3 views
1

У меня очень большой стол с примерно 50 миллионами строк и 15 столбцами. Всякий раз, когда я читаю, мне всегда нужны все столбцы, поэтому я не могу их разбить. У меня есть кластеризованный индекс в таблице с 4 ключами, и я всегда читаю данные с помощью этих ключей.Оптимизация больших таблиц SQL Server

Но производительность по-прежнему медленно, мои запросы сказочные просто как этого

select 
    CountryId, RetailerID, FY, 
    sum(col1), sum(col2),.....sum(col15) 
from mytable a 
join product p on a.productid = p.id 
join ...... 
join ..... 
join ...... 
join ..... 
Where ....... 
group by CountryId, RetailerID, FY 

Я не с помощью любого IN оператора или любых подзапросов здесь на любых встроенных функциях ... которые я знаю, очевидно, сделать он медленный. Я посмотрел на раздел, но не уверен в этом, могу ли я улучшить производительность, заняв раздел?

ИЛИ есть что-нибудь еще, что я могу сделать?

Я использую SQL Server 2012 Enterprise Edition

Пожалуйста, помогите!

+0

Выполняет ли все ~ 50 миллионов строк регулярно или является историческим и не будет обновляться? – jpw

+4

Вы пробовали посмотреть на план запроса? –

+1

Согласен, пожалуйста, сначала посмотрим план выполнения. – 0xCAFEBABE

ответ

0

Спасибо, ребята, я сделал это, используя агрегированные таблицы. Я запускаю задание для агрегирования данных за одну ночь, которая ограничивает количество строк, и отчеты сейчас работают нормально.

Смежные вопросы