Мне интересно, как база данных будет хранить кластерную индексированную таблицу с несколькими столбцами.
* 1003 Е.Г. *
У меня есть такая таблица:
product area price date
Wood NewYork 20 20111102
Iron NewYork 155 20111102
Stone NewYork 33 20111102
Wood Boston 21 20111102
Iron Boston 150 20111102
Stone Boston 30 20111102
Wood NewYork 19 20111101
Iron NewYork 165 20111101
Stone NewYork 32 20111101
Wood Boston 22 20111101
Iron Boston 159 20111101
Stone Boston 34 20111101
Большинство моих запросов - получить среднюю цену за определенный товар в определенный день. Первичный ключ имеет значение (product, area, date)
, для этого первичного ключа существует кластеризованный индекс.
Вопрос 1.
Как база данных будет физически хранить эти данные? Если в последовательности (product, area, date)
, это может выглядеть как
product area price date
Wood NewYork .. 20111102
Wood Boston .. 20111102
Wood ... .. 20111101
Wood ... .. 20111101
Iron NewYork 50 20111102
Iron Boston 30 20111102
Stone NewYork 19 20111101
Stone Boston 165 20111101
Но разве не будет быстрее, если физические записи упорядочены по датам, тогда БД сможет загружать строки с меньшим количеством операций на диске? Если это так, могу ли я контролировать заказ?
Вопрос 2.
Похоже, что кластеризованный индекс не обеспечивает повышения производительности запроса. После того как я добавил некластеризованный индекс по дате, для большинства запросов скорость составляет 1 секунду (50 секунд, когда по дате нет индекса). Почему такая огромная разница?