Как улучшить производительность этого запроса [закрыто]

a_horse_with_no_name является правильным.

В PostgreSQL имена без кавычек нечувствительны к регистру. Таким образом, SELECT * FROM hello и SELECT * FROM HELLO эквивалентны.

Однако цитируемые имена чувствительны к регистру. SELECT * FROM "hello" - , а не , эквивалентный SELECT * FROM "HELLO".

Чтобы создать «мост» между цитируемыми именами и именами без кавычек, неупомянутые имена неявно ограничены, таким образом hello, HELLO и HeLLo эквивалентны "hello", но не "HELLO" или "HeLLo" (OOPS!).

Таким образом, при создании объектов (таблицы, представления, процедуры и т. д.) в PostgreSQL, вы должны указать их как без кавычек, так и с кавычками, но с нижним.


Чтобы преобразовать существующие таблицы / представления / etc, вы можете использовать что-то вроде ALTER TABLE "FOO" RENAME TO "foo".

Или попробуйте изменить дамп из MSSQL, чтобы сделать его «совместимым с PostgreSQL» (чтобы он содержал foo s или "foo" s, но не "FOO" s).

  • Либо путем прямого редактирования файла дампа. (Если вы используете Linux, вы можете сделать sed -r 's/"[^"]+"/\L\0/g' dumpfile - однако следует предупредить, что эта команда также может изменять текст в строковых литералах.)
  • Или указав некоторые параметры при получении дампа из MSSQL. (Я не уверен, есть ли такие опции в MSSQL, никогда не использовал его, но, вероятно, такие варианты должны существовать.)
-10
задан Alexo 29 August 2017 в 02:49
поделиться