Сортировка "не по порядку" SQL Server 2008
От: blonduser  
Дата: 28.04.16 09:34
Оценка:
Всем доброго времени суток!

Есть целочисленное индексированное поле со значениями 1,2,3,4,5 и т.д.
Мне нужно отсортировать их в таком порядка 10,5,1,4,2 и т.д.
Я делаю это через CASE , но сортировка происходит медленнее, чем сортировка просто по полю.

Есть какие нить варианты что бы ускорить это?


Спасибо.
Re: Сортировка "не по порядку" SQL Server 2008
От: wildwind Россия  
Дата: 28.04.16 09:47
Оценка:
Здравствуйте, blonduser, Вы писали:

B>Мне нужно отсортировать их в таком порядка 10,5,1,4,2 и т.д.

А что в "и т.д."? Принцип остался непонятен.

B>Я делаю это через CASE , но сортировка происходит медленнее, чем сортировка просто по полю.

Насколько медленнее?

B>Есть какие нить варианты что бы ускорить это?

Есть. Например добавить еще одно поле, пронумеровать как нужно и сортировать по нему.
Re: Сортировка "не по порядку" SQL Server 2008
От: Sinix  
Дата: 28.04.16 09:48
Оценка:
Здравствуйте, blonduser, Вы писали:

B>Есть какие нить варианты что бы ускорить это?

Завести новое поле, захардкодить в него "вес" строки (произвольное дробное число), сортировать по весу.
Индекс, если сортировка — узкое место.
Re: Сортировка "не по порядку" SQL Server 2008
От: vmpire Россия  
Дата: 28.04.16 10:23
Оценка:
Здравствуйте, blonduser, Вы писали:

B>Мне нужно отсортировать их в таком порядка 10,5,1,4,2 и т.д.

B>Есть какие нить варианты что бы ускорить это?
Сделать постоянную или временную дополнительную таблицу для порядка сортировки с соответствием {значение, порядок сортировки}
Соединить с ней исходную таблицу и сортировать по порядку в дополнительной таблице.
На соединяемые поля в обеих таблицах сделать индексы (в дополнительной — кластерный или с добавленной второй колонкой)
Re[2]: Сортировка "не по порядку" SQL Server 2008
От: blonduser  
Дата: 28.04.16 10:51
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Здравствуйте, blonduser, Вы писали:


B>>Мне нужно отсортировать их в таком порядка 10,5,1,4,2 и т.д.

B>>Есть какие нить варианты что бы ускорить это?
V>Сделать постоянную или временную дополнительную таблицу для порядка сортировки с соответствием {значение, порядок сортировки}
V>Соединить с ней исходную таблицу и сортировать по порядку в дополнительной таблице.
V>На соединяемые поля в обеих таблицах сделать индексы (в дополнительной — кластерный или с добавленной второй колонкой)

Воспользуюсь вашим вариантом.
Re[2]: Сортировка "не по порядку" SQL Server 2008
От: Lexey Россия  
Дата: 29.04.16 07:52
Оценка:
Здравствуйте, vmpire, Вы писали:

B>>Мне нужно отсортировать их в таком порядка 10,5,1,4,2 и т.д.

B>>Есть какие нить варианты что бы ускорить это?
V>Сделать постоянную или временную дополнительную таблицу для порядка сортировки с соответствием {значение, порядок сортировки}

А что не индексированную вьюху?
"Будь достоин победы" (c) 8th Wizard's rule.
Re[3]: Сортировка "не по порядку" SQL Server 2008
От: seregaa Ниоткуда http://blogtani.ru
Дата: 29.04.16 14:01
Оценка:
Здравствуйте, Lexey, Вы писали:

L>А что не индексированную вьюху?


Имхо решение с вьюхой на самый крайний случай. Вдруг у него в таблице всего сотня-другая записей?
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[4]: Сортировка "не по порядку" SQL Server 2008
От: blonduser  
Дата: 29.04.16 15:53
Оценка:
Здравствуйте, seregaa, Вы писали:

S>Здравствуйте, Lexey, Вы писали:


L>>А что не индексированную вьюху?


S>Имхо решение с вьюхой на самый крайний случай. Вдруг у него в таблице всего сотня-другая записей?


Спасибо и вьюху попробую, как только руки дойдут.
Основная таблица с миллионами записей и в ней кроме всего содержится тип записи.
Типов записей меньше сотни.
В зависимости от языка тип записи нужно отсортировать по алфавиту.
Re[5]: Сортировка "не по порядку" SQL Server 2008
От: wildwind Россия  
Дата: 29.04.16 17:26
Оценка: +4
Здравствуйте, blonduser, Вы писали:

B>Основная таблица с миллионами записей и в ней кроме всего содержится тип записи.

B>Типов записей меньше сотни.
B>В зависимости от языка тип записи нужно отсортировать по алфавиту.

Реальная задача и постановка в исходном посте как небо и земля.
Re[2]: Сортировка "не по порядку" SQL Server 2008
От: MasterZiv СССР  
Дата: 05.05.16 12:37
Оценка: +1
Здравствуйте, Sinix, Вы писали:

B>>Есть какие нить варианты что бы ускорить это?

S>Завести новое поле, захардкодить в него "вес" строки (произвольное дробное число), сортировать по весу.
S>Индекс, если сортировка — узкое место.

Хочу только заметить, что индекс на ORDER BY использовать достаточно сложно, далеко не всегда получается.
Очень сильно зависит от запроса.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.