SQL Запросы из АДА

AnrDaemon

Продвинутый новичок
Фуллскан не так с LOWER()
Кластерные индексы не так с LOWER()
Вообще всё не так, включая неизвестно какой COLLATE и полное отсутствие каких-либо гарантий.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
сам по себе lower() можно индексировать, но если у тебя кластерный - да, нужен materialized view или как-то еще извращаться.

а collate в постгресе очень даже предсказуемый! ... какой LC_COLLATE при создании базы (не)задан - такой и есть :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
в документации написано, что кодировка задается при создании базы, collation можно задать для поля
SQL:
CREATE TABLE test1 (
    a text COLLATE "de_DE",
    b text COLLATE "es_ES"
);
еще можно в запросе оператором COLLATE - правда, смысл в этом я вижу только для дебага

collation можно использовать из набора, который поддерживается в charset, а charset-ы берутся из операционной системы (в mysql они в поставке),
можно добавить collation, который поддерживается операционной системой и совместим с текущей кодировкой базы

короче, с постгресом приложение надо проектировать в привязке к baseline (конкретная OS, системные библиотеки), потому что на линуксе, винде и маке разные чарсеты, и результаты запроса разные

а коли никто не парится задавать чарсет ни для inittdb, ни для базы, используется дефолтная системная, которая была включена у рута при установке
gri@air ~$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
- счастливой отладки
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Знаешь, я эту документацию ещё две недели назад прочёл. А потом перечитывал в попытках наскрести информации на решение.
То, что она написана без применения мозга, было очевидно ещё тогда.
 
Сверху