Reading the index of a clustered column store in SQL Server 2014, I wonder if a table with a huge number of columns is still an anti-pattern. Currently, to solve the problem of having a single table with a large number of columns, I use vertical partitioning , but the presence of a clustered column storage index in this case is not required. Is this correct or am I missing something?
Example: Take, for example, the log of performance counters, raw data can have the following structure:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโฆโโโโโโโโโโโ
โ Time โ Perf1 โ Perf2 โ ... โ ... โ ... โ Perf1000 โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโฌโโโโโโโโโโโฃ
โ 2013-11-05 00:01 โ 1 โ 5 โ โ โ โ 9 โ
โ 2013-11-05 00:01 โ 2 โ 9 โ โ โ โ 9 โ
โ 2013-11-05 00:01 โ 3 โ 2 โ โ โ โ 9 โ
โ 2013-11-05 00:01 โ 4 โ 3 โ โ โ โ 9 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโฉโโโโโโโโโโโ
Having such a table with 1000 columns is evil because one row will most likely cover more than one page, because it is usually unlikely that you will be interested in all measures, but the request will always depend on the cost of I / O, etc. .. etc .. To solve this vertical partitioning it usually helps, for example, you can separate the performance counters in different tables into categories (CPU, RAM, etc.).
Conversely, a table such as a clustered column storage index should not be such a problem, because the data will be stored in columns, and the IO involved for each request will contain only the requested columns, no more, regardless of the total number of columns in table.
source share