Невидимые колонки
Невидимые колонки Знаете ли Вы, что в некоторых СУБД (MySQL с версии 8.0.23, MariaDB с версии 10.3.3 и Oracle с версии 12c) колонку в таблице можно сделать "невидимой"? 👻 Да, колонка существует, но SELECT * и DESCRIBE её игнорируют. Выглядит как магия! И это отличный способ свести с ума неопытного коллегу-разработчика 😂 Зачем это нужно? Главный сценарий использования — это добавление новой колонки в условиях, когда должны параллельно работать старая и новая версия прикладного кода. Можно развертывать их одновременно и не бояться, что старая версия "рухнет" на очередном SELECT * И, сразу же, добрый совет: не используйте SELECT * в своем боевом коде! Даже если Вы не используете невидимые колонки, есть еще, как минимум, две веские причины: 1. Порядок колонок — при изменении структуры таблицы (добавление/удаление) порядок может измениться. Код, который полагается на позицию (например, $row[2] для PHP), может сломаться самым неожиданным образом. 2. Производительность — Вы передаёте все колонки, даже те, что не нужны. Это лишний трафик, память и нагрузка на сеть. На больших таблицах разница весьма ощутима. Явное перечисление колонок делает код прозрачнее, безопаснее и быстрее. А если Вам лень писать вручную длинные списки полей — используйте горячие клавиши, встроенные в продвинутые IDE. Одно нажатие и все поля уже в запросе, остается только проредить их список до реально необходимых.