MySQL: в чем преимущество режима non-ansi?



Поскольку я обычно работаю с несколькими различными базами данных, я стараюсь переключить MySQL в режим ANSI, чтобы обеспечить некоторую согласованность в моем коде. Таким образом, я могу использовать двойные кавычки для имен столбцов и || для конкатенации, что нормально для большинства баз данных (MSSQL, похоже, не использует ||).



Помимо совместимости, есть ли преимущество в Не переключении в режим ANSI в MySQL?

660   2  

2 ответов:

Из документации MySQL :

ANSI
Эквивалентно REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE и (начиная с MySQL 5.7.5) ONLY_FULL_GROUP_BY.

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

- это совсем другая история. Когда этот режим выключен от в MySQL (что произошло бы, если бы ANSI был отключен), то это означает, что у вас может быть запрос GROUP BY, который выбирает столбцы, не появляющиеся в агрегатах или в предложении GROUP BY. Такой запрос, скорее всего, полностью провалится в любой другой базе данных, за исключением, возможно, MariaDB. Кроме того, если вы пишете все свои запросы с отключенным режимом laxity of ONLY_FULL_GROUP_BY , то вы можете столкнуться с серьезным рефакторингом многих запросов, если когда-либо попытаетесь перенести свой код в другую базу данных.

Я бы посоветовал вам держаться в ANSI stanadards. В случае ONLY_FULL_GROUP_BY, придерживаться его-это просто хорошая практика базы данных, а другие незначительные косметические требования-это то, что вы, возможно, уже делаете.

Это немного длинновато для комментария. Режим ANSI-который хорошо объяснен в документации - в основном представляет собой несколько стилистических изменений языка. Эти изменения могут показаться незначительными,но они идут вразрез с историей MySQL.

Другими словами, использование режима ANSI означает, что" традиционный " код MySQL не обязательно поддерживается. Это хорошо или плохо? Зависит. Если вам нужна совместимость с другими базами данных, то это хорошо. Если вам нужна совместимость с legacy код, значит, плохой.

Comments

    Ничего не найдено.