Nonclustered Columnstore Index on Base Table Partitioned by Computed Column

If you have SQL Server 2012 and created a NCCI on a base table partitioned by a computed column, you might have noticed that it produces a serial plan instead of a parallel plan. This, naturally, slows down index creation. How slow depends on your database size and number of partitions.

You can use sys.dm_exec_query_memory_grants DMV to find out the degree of parallelism (dop) as well as required memory. Example output:


session_id request_id  scheduler_id  dop     requested_memory_kb  granted_memory_kb    required_memory_kb   used_memory_kb       max_used_memory_kb   query_cost              group_id    pool_id     is_small ideal_memory_kb

--------------  -------------  ------------------ ------    -------------------------------   --------------------------     ----------------------------   -----------------------        -------------------------------   ----------------             -----------    -----------    ----------- -----------------------

54              0                 12                  1         175952                          187144                        175952                           170760                       187144                             4814965.07430016     2             2                0            175952



Though you are able to create an NCCI on a table partitioned by computed column in SQL Server 2012, we recommend customers to not use NCCI on tables partitioned on a computed column.

In SQL Server 2014, if you try to create a nonclustered columnstore index (NCCI) on base tables partitioned by a computed column, you will get the following error message:

Internal Query Processor Error: The query processor could not produce a query plan. For more information, contact Customer Support Services.

Comments (0)

Skip to main content