MySQL: в чем преимущество режима non-ansi?
Поскольку я обычно работаю с несколькими различными базами данных, я стараюсь переключить MySQL в режим ANSI, чтобы обеспечить некоторую согласованность в моем коде. Таким образом, я могу использовать двойные кавычки для имен столбцов и || для конкатенации, что нормально для большинства баз данных (MSSQL, похоже, не использует ||).
Помимо совместимости, есть ли преимущество в Не переключении в режим ANSI в MySQL?
2 ответов:
Первые четыре из этих включенных режимов являются в основном незначительными косметическими вещами, такими как разрешение каналов для конкатенации строк и игнорирование пробелов между именем функции и символом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 ofONLY_FULL_GROUP_BY, то вы можете столкнуться с серьезным рефакторингом многих запросов, если когда-либо попытаетесь перенести свой код в другую базу данных.Я бы посоветовал вам держаться в ANSI stanadards. В случае
ONLY_FULL_GROUP_BY, придерживаться его-это просто хорошая практика базы данных, а другие незначительные косметические требования-это то, что вы, возможно, уже делаете.
Это немного длинновато для комментария. Режим ANSI-который хорошо объяснен в документации - в основном представляет собой несколько стилистических изменений языка. Эти изменения могут показаться незначительными,но они идут вразрез с историей MySQL.
Другими словами, использование режима ANSI означает, что" традиционный " код MySQL не обязательно поддерживается. Это хорошо или плохо? Зависит. Если вам нужна совместимость с другими базами данных, то это хорошо. Если вам нужна совместимость с legacy код, значит, плохой.
Comments