У нас есть таблица с 17Mil строками, содержащими атрибуты продукта, скажем, они:
brandID, sizeID, colorID, цена, shapeID
И нам нужно запросить агрегаты по марке и размеру. В настоящее время мы запрашиваем и фильтруем эти данные, выполняя что-то вроде этого:
select brandID, sizeID, count(*)
from table where colorID in (1,2,3) and price=10 and shapeID=17
--"additional complex where clause here"
group by brandID, sizeID
order by brandID, sizeID
И мы сообщаем эти данные. Проблема в том, что для выполнения этого запроса требуется около 10 секунд (и это очень простой пример), несмотря на тот факт, что реальные возвращаемые данные будут состоять из нескольких сотен строк.
Я думаю, что мы достигли нашей способности индексировать эту таблицу, поэтому я не думаю, что какое-то количество индексов приведет нас к почти мгновенным результатам.
Я очень мало знаю об OLAP или других аналитических службах, но как быть с SQL Server, который может предварительно фильтровать или предварительно агрегировать эту таблицу, чтобы можно было выполнять запросы, подобные приведенным выше (или аналогичные, возвращающие эквивалентные данные)?
ИЛИ Как лучше всего обрабатывать произвольные операторы where в очень большой таблице?