Мы часто используем VARCHAR для по существу перечисляемых значений. Я знаю, что часто было бы разумно извлечь их в отдельную таблицу поиска и использовать целочисленный идентификатор в качестве внешнего ключа, но иногда никакая другая таблица не использует его, и мы не хотим другого JOIN, поэтому мы решили сохранить их в основной стол.Неявные перечисляемые типы (то есть символы) в SQL
Итак, вопрос в том, есть ли какая-нибудь функция БД, которая позволила бы мне отмечать такие столбцы, а затем использовать некоторую внутреннюю таблицу поиска, чтобы сэкономить место и повысить производительность моих запросов? Что-то похожее на Postgres 'ENUMs, но для этого не требуется явно декларировать возможные значения спереди.
Например, я хотел бы сделать INSERT:
INSERT INTO table (date, status) VALUES ('2011-01-25', 'pending');
и 'pending'
будет внутренне рассматриваться как целое, сохраняя только один экземпляр фактической строки, даже если несколько строк содержат одинаковое значение 'pending'
,
В некоторых языках программирования (LISP, Ruby) аналогичная функция называется symbols, де-факто «названные целые числа».
Меня интересуют только Postgres и MySQL, но любые другие указатели будут оценены.
Спасибо, ты дал мне правильные ключевые слова для дальнейшего поиска! Прозрачность - это то, что я имел в виду. И хотя сжатие страниц работает на более низком уровне, чем я ожидал, точка одна и та же. –