2012-03-28 3 views
4

Одним из преимуществ индекса columnstore является то, что данные одного столбца хранятся «рядом друг с другом на диске». Это означает лучшее сжатие и более быстрое время чтения.SQL Server 2012: индекс столбцов производительности vs B-tree

Однако; при использовании B-дерева (регулярного некластеризованного индекса) не являются ли листья этого дерева самими данными? Поэтому, когда я делаю индекс в столбце A, будут ли все поля столбца A отображаться на диске параллельно таблице? Это означает, что данные могут быть сжаты и могут быть быстро прочитаны.

Итак, вкратце: когда именно columnstore-index более эффективен, чем B-дерево в одном столбце?

Заранее благодарен!

ответ

1

Так что, когда я делаю индекс в столбце A, не будут ли все поля столбца A отсортированы на диске параллельно таблице?

Да, столбец A будет сортироваться. Но все остальные столбцы не будут. Индекс хранилища столбцов хранит все столбцы в отсортированном порядке (в кусках 2^20 строк).

+0

Хорошо. Но когда вы выбираете что-то из столбца A, в любом случае все данные A сортируются. Могу ли я предположить, что индекс столбца-столбца более эффективен при запросе других столбцов? Но что, когда я просто кладу B-tree на эти столбцы? – Gurdt

+0

Когда вам нужно отсортировать данные, B-Tree вообще не потребуется операция сортировки (если запрашиваемые вами столбцы являются префиксом индекса). Хранилище столбцов не может обеспечить их сортировку, потому что хранит их в двух строках. Если у вас несколько таких сегментов, порядок сортировки не может быть предоставлен. – usr

+0

Я думаю, что здесь может быть какое-то недоразумение. Цель индекса columnstore (или, как я полагаю), заключается в том, что при чтении данных с диска меньше затрат, потому что могут загружаться только соответствующие столбцы. При загрузке из хранилища строк один выбирает строки в целом, поэтому загружает столбцы, которые могут не понадобиться. Теперь дело в следующем: если меня интересует только один столбец, скажем A, как индекс столбцов может быть более эффективным, в отличие от простого B-дерева (некластеризованный индекс). Листы некластеризованного индекса фактически хранятся как столбец, поле за полем, как можно компактнее. – Gurdt

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