2013-12-09 2 views
2

Я хотел бы знать, как установить порядок по умолчанию для индекса. Grails 2.3.3, Postgres 9.Заказ индексов postgres с GORM

Цель этот индекс:

"crstate_idx" btree (cr_state, last_updated DESC) 

Этот код GORM:

static mapping = { 
    crState index: 'crState_Idx' 
    lastUpdated index: 'crState_Idx' 
} 

Получает меня:

"crstate_idx" btree (cr_state, last_updated) 

Как добавить DESC часть?

+0

Не удивился бы, если бы он не поддерживал нисходящие упорядоченные индексы. Многие генераторы схем, похоже, не поддерживают ничего, кроме простой базовой индексации. Возможно, у него может быть «порядок:« desc »или« order: desc », на который вы можете напасть? –

+1

Я думаю, вы можете проверить диалект спящего режима для postgre, чтобы узнать, существует ли эта опция. –

ответ

1

нет такой вещи, как нисходящий индекс. Индексы B-дерева просто упорядочиваются от самого низкого до самого высокого значения. DESC vs ASC определяется, если вы начнете сканирование с конца или с самого начала. Речь идет о запросе, который вы выполняете, поэтому я предлагаю вам посмотреть, как выполнить запрос, возвращающий строки в порядке убывания.

+0

В соответствии с руководством postgres индекс создания позволяет указать порядок. Запрос в порядке. Это было для реализации очереди - вершина всегда захватывается, поэтому логично предварительно сортировать. Я не помню, как тестировал разницу в производительности, независимо от того, логически ли вы выполняете операцию поиска индекса, или можно избежать операции сортировки. Спецификация индекса была вопросом, так что это интересный момент, но не отвечает на вопрос. http://www.postgresql.org/docs/9.1/static/sql-createindex.html – Interlated

+0

Вы действительно прав - я никогда не знал об этом. Я думаю, DESC может быть полезен для монотонно уменьшающихся последовательных столбцов. – kristok

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