Если в ваших таблицах нет дубликатов, вы можете использовать UNION ALL
.Подзапрос также не нужен:
SELECT 'TABLE1' AS TABLE_NAME, DATE
FROM "SCHEMA"."TABLE1" TABLE1
WHERE DATE >= '2018-12-01' AND DATE <= '2018-12-31'
UNION ALL
SELECT 'TABLE2' AS TABLE_NAME, DATE
FROM "SCHEMA"."TABLE2" TABLE2
WHERE DATE >= '2018-12-01' AND DATE <= '2018-12-31'
UNION ALL
SELECT 'TABLE3' AS TABLE_NAME, DATE
FROM "SCHEMA"."TABLE3" TABLE3
WHERE DATE >= '2018-12-01' AND DATE <= '2018-12-31';
UNION
накладные расходы на удаление дубликатов.У вас нет дубликатов между таблицами из-за первого столбца, поэтому используйте вместо него UNION ALL
.
Если в ваших таблицах есть дубликаты, добавьте индекс для DATE
для каждой из них.и используйте SELECT DISTINCT
с UNION ALL
:
SELECT DISTINCT 'TABLE1' AS TABLE_NAME, DATE
FROM "SCHEMA"."TABLE1" TABLE1
WHERE DATE >= '2018-12-01' AND DATE <= '2018-12-31'
UNION ALL
SELECT DISTINCT 'TABLE2' AS TABLE_NAME, DATE
FROM "SCHEMA"."TABLE2" TABLE2
WHERE DATE >= '2018-12-01' AND DATE <= '2018-12-31'
UNION ALL
SELECT DISTINCT 'TABLE3' AS TABLE_NAME, DATE
FROM "SCHEMA"."TABLE3" TABLE3
WHERE DATE >= '2018-12-01' AND DATE <= '2018-12-31';
Индекс будет использоваться для SELECT DISTINCT
, и вам не придется нести накладные расходы на удаление несуществующих дубликатов между таблицами.