Постановка проблемы:
Каков оптимальный способ получить схему столбцов в предложении select (имена столбцов, типы) запроса с использованием java?
Параметры
Один из вариантов — запустить запрос, а затем использовать ResultSetMetadata для получения имени столбца и типа, но я не уверен, будет ли это оптимальным, поскольку будет выполняться весь запрос. Даже с предложением limit он может выполнить весь запрос до того, как результаты будут ограничены. Будет ли разница в производительности между запросами с предложением limit и без него?
Другой вариант — по ссылке, т.е. дает ложное условие запроса и использовать ResultSetMetaData.
Например, выберите * из A, где 1=0;
Какой другой способ лучше или вариант 2 самый оптимальный во всех случаях? у меня может быть запрос, который объединяет несколько таблиц, будет ли вариант 2 иметь смысл и в этом случае, когда я добавлю ложное условие в конце?
Примечание. Требуется решение для DB2 и SqlServer.
РЕДАКТИРОВАТЬ: Кроме того, будет ли порядок, в котором извлекается схема, соответствовать порядку столбцов в данных? т. е. если я выберу * из A, скажем, я получу 5 столбцов. Будет ли этот порядок совпадать с тем, когда я получаю схему, используя ResultSetMetadata, используя тот же запрос?
select *
на Java. Вы всегда должны готовить свой оператор и явно указывать возвращаемые столбцы. Таким образом, вам даже не нужно проверять метаданные. (источник: blog.jooq.org/2013/08/12/) - person Stavr00   schedule 25.05.2016