Разделение взглядов в sql
Как разделить индексированное представление в MS-SQL? У меня есть представление индекса, который хранит диапазон значений. Определение представления следующее
CREATE VIEW dbo.target_individual_product WITH SCHEMABINDIN
AS SELECT day_dim.date_time AS Date,
SUM(ISNULL(order_dim.quantity,0)) AS Target_Acheived,
branch_dim.branch_name AS Branch_Name ,
product_dim.product_name AS Product_Name
FROM dbo.day_dim INNER JOIN
dbo.order_fact ON day_dim.day_id = order_fact.day_id
INNER JOIN dbo.product_dim ON order_fact.product_id = product_dim.product_id
INNER JOIN dbo.branch_dim ON order_fact.branch_id = branch_dim.branch_id
INNER JOIN dbo.order_dim ON order_fact.order_id = order_dim.order_id
GROUP BY order_dim.quantity, day_dim.date_time,branch_dim.branch_name, product_dim.product_name
GO
CREATE UNIQUE CLUSTERED INDEX target_individual_product_I on target_individual_product (Date)
Теперь я хочу разделить эту таблицу, используя столбец даты. Как я могу это сделать?
2 ответа
Вы, похоже, ищете индекс с выравниванием по разделам; поддержка разделов поддерживается в SQL 2008 Enterprise Edition (вы не упомянули свою версию или редакцию). Секционированные индексы обсуждаются в Books Online, но я не могу найти индексы секционируемых представлений, которые я могу найти, хотя это возможно, и это описано здесь в официальном документе (см. Запрос 11 в конце статьи):
У меня мало опыта с разбиением, но я думаю, что вы путаете вещи. (Гуру, пожалуйста, поправьте меня, если я ошибаюсь).
Насколько я знаю, в SQL Server существует три типа разбиения:
Секционированная таблица может быть разбита на столбец, такой как дата.
Разделенное представление - это представление, определяющее UNION
между похожими запросами из разных таблиц.
Индексированное представление с выравниванием по разделам - это индексированное представление, которое секционируется по тому же столбцу (столбцам), что и секционированная таблица, с которой оно связано.
Я не думаю, что возможно разделить индексированное представление без разделения основной таблицы. Поэтому я бы предложил разделить ваш day_dim
на date_time
столбца, а затем создайте выравниваемое по разделу индексированное представление, соответствующее этому столбцу. Посмотрите эту ссылку и прокрутите вниз до Query 11 для примера, как это сделать.