Одна из вероятных причин заключается в том, что разметка обычно меняет НАМНОГО чаще, и ее придется минимизировать для каждой загрузки страницы. Например, на данной странице переполнения стека есть временные метки, имена пользователей и количество повторов, которые могут меняться при каждой загрузке страницы, а это значит, что вам придется минимизировать и для каждой загрузки страницы. С помощью «статических» файлов, таких как css и javascript, вы можете минимизировать гораздо реже, так что, по мнению некоторых, это стоит того, чтобы работать заранее.
Учтите также, что каждый крупный веб-сервер и браузер поддерживают gzip, который в любом случае сжимает всю вашу разметку ( быстро ) на лету. Поскольку минимизация медленнее и намного менее эффективна, чем gzipping в любом случае, веб-мастера могут решить, что минимизация для каждой загрузки страницы не стоит затрат на обработку.
Я думаю, вам лучше использовать оператор CASE для каждого возможного значения столбца единицы измерения, поскольку это конечный мир. Вы можете выбрать, сохранять ли столбец как varchar или использовать вместо него целочисленный код.
Я бы не рекомендовал использовать динамически выполняемые операторы SQL, даже если они сгенерированы из существующей таблицы, если вы не на 120% осторожны в ограничении значений, которые вставляются в таблицу. Что бы вы сделали, если бы в таблице каким-то образом оказались следующие значения? Упс!
+------------+------+------------------------------------+ | date |value | unit | +------------+------+------------------------------------+ | 2009-01-01 | 2 | DAY | | 2009-02-01 | 3 | MONTH | | 2009-03-01 | 4 | DAY) FROM table; DROP TABLE table; | +------------+------+------------------------------------+
Я занимаюсь переустановкой MySQL на моем компьютере, поэтому я не могу его протестировать, но, возможно, объединение их в действительную строку может помочь, если здесь разрешена функция CONCAT ():
SELECT
DATE_ADD(
table.date_column,
INTERVAL CONCAT(
table.integer_column,
' ',
table.varchar_column
)
)