Всегда есть некоторые преимущества и некоторые затраты на использование диалекта языка с наименьшим общим знаменателем для обеспечения переносимости. Я думаю, что опасность привязки к конкретной СУБД невелика по сравнению с аналогичными опасностями для программирования языков, библиотек объектов и функций, составителей отчетов и т. П.
Вот что я бы порекомендовал в качестве основного способа защиты переносимости в будущем. Создайте логическую модель схемы, которая включает в себя таблицы, столбцы, ограничения и домены. Сделайте это независимой от СУБД в контексте баз данных SQL. Единственное, что будет зависеть от диалекта, это тип данных и размер для нескольких доменов. Некоторым старым диалектам не хватает поддержки доменов, но вы все равно должны сделать свою логическую модель с точки зрения доменов. Тот факт, что два столбца взяты из одного домена, а не просто имеют общий тип данных и размер, имеет решающее значение для логического моделирования.
Если вы не понимаете различия между логическим моделированием и физическим моделированием, изучите его.
Сделайте как можно большую часть структуры индекса переносимой. В то время как каждая СУБД имеет свои собственные специальные функции индекса, взаимосвязь между индексами, таблицами и столбцами практически не зависит от СУБД.
С точки зрения обработки SQL CRUD внутри приложения, при необходимости используйте специфические конструкции СУБД, но старайтесь сохранять их документированными. Например, я без колебаний использую конструкцию Oracle «CONNECT BY» всякий раз, когда я думаю, что она принесет мне пользу. Если ваше логическое моделирование было независимым от СУБД, большая часть CRUD SQL также будет независимой от СУБД даже без особых усилий с вашей стороны.
Когда придет время двигаться, ожидайте некоторые препятствия, но ожидайте их систематического преодоления.
(Слово «вы» в приведенном выше относится к тому, кого это может касаться, а не к ОП в частности.)