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