Unicode, сортировки, а я маленький такой
Dec. 4th, 2017 08:07 pmКоллега сегодня обнаружил, что при сортировке в уникодной локали PostgreSQL выдаёт записи в таком порядке:
_a
a
_c
d
что несколько контринтуитивно.
Вскрытие показало, что алгоритм сравнения в Unicode довольно хитровывернутый в этом месте. При сортировке в локали базы в итоге символы подчёркивания игнорируются.
Вылечилось это привешиванием COLLATE "C" на искомую колонку, который даёт сравнение, грубо говоря, побайтовое. Но вообще поведение документированное, но неочевидное.
_a
a
_c
d
что несколько контринтуитивно.
Вскрытие показало, что алгоритм сравнения в Unicode довольно хитровывернутый в этом месте. При сортировке в локали базы в итоге символы подчёркивания игнорируются.
Вылечилось это привешиванием COLLATE "C" на искомую колонку, который даёт сравнение, грубо говоря, побайтовое. Но вообще поведение документированное, но неочевидное.
no subject
Date: 2017-12-08 10:46 pm (UTC)no subject
Date: 2017-12-09 06:06 am (UTC)Ну, тут простите, контр-аргумент детсадовский "А если несколько СУБД пойдут с крыши прыгать, постгрес тоже должен пойти?"
Сообщество принципиально не ориентируется на нюансы реализации других СУБД, а ориентируется на SQL стандарт и практическую целесообразность...
Поэтому ответ на вопрос "зачем нужно" имеет большое практическое значение.
no subject
Date: 2017-12-09 10:35 am (UTC)no subject
Date: 2017-12-09 07:58 pm (UTC)Могу предложить предложение: у меня рано или поздно откроется таймслот на постгресовый патч, могу посвятить его вам (только пожалуйста что-нибудь не сложное). Но для этого нужно будет объяснить почему оно нужно, сначала мне, а потом сообществу... Вот это вот с моей точки зрения будет конкретика...
no subject
Date: 2017-12-10 04:52 pm (UTC)Позвольте и мне поглумиться немного, заранее приношу извинения, ибо обидеть не хочу.
На нашей ERP тесты производительности такие:
Firebird - 1
PostgreSQL - 1/4
SQL Server - 1/10
Есди будет время на таймслот, устраните более чем двукратное отставание от SQL Server. Один из наших клиентов будет рад :)
no subject
Date: 2017-12-14 09:33 pm (UTC)Ну... вам ехать, или поныть? Если поныть, то заход удачный. Для остальных задач -- не очень...
Позвольте и мне поглумиться немного, заранее приношу извинения, ибо обидеть не хочу.
Я тогда в том же ключе отвечу, ок?
На нашей ERP тесты производительности такие:
Firebird - 1
PostgreSQL - 1/4
SQL Server - 1/10
Есди будет время на таймслот, устраните более чем двукратное отставание от SQL Server. Один из наших клиентов будет рад :)
А кнопку "сделать зашибись" вам не сделать?
Какие запросы больше всего тормозят систему? Прикладывал ли спец по постгресу руку к оптимизации схемы данных и оптимизации настройки?
Оптимизация скорости роботы запроса несколько выше моих нынешних умений (вот money < 15 это я точно осилю), я могу с профайлером поразвлекаться. Но простите, не с такой постановкой задачи не разу...