MySQL поиск идентификатора в (одинаково структурированных) нескольких таблицах

У меня есть продукты в 3 (идентично структурированных) таблицах с 3 столбцами столбцов: идентификатор, дата, запросы.
При поиске определенного идентификатора продукта я хотел бы искать во всех таблицах (заранее не знаю, в какой таблице можно найти идентификатор продукта)

Таблица1 очень большая (более 100 миллионов строк), и в настоящее время я использую этот запрос для создания временной таблицы, которую я использую для выполнения других запросов.

CREATE TEMPORARY TABLE temp ENGINE=MEMORY
as (select DISTINCT id, date, requests from table1 WHERE id='$id');

SELECT ... FROM temp

Объединение трех таблиц с использованием UNION и последующий поиск идентификатора занимает вечность из-за размера таблицы 1 (более 100 миллионов строк), так что это неправильный подход.

Самый быстрый способ, которым я придумал (я бы сделал это с помощью PHP):

search table1, if id found create temporary table,
if id not found in table 1 then
search table2, if id found create temporary table,
if id not found in table 2 then
search table3, if id found create temporary table,
if id not found in table3 then return id not found.

Однако, таким образом, я выполняю несколько запросов (если id находится в таблице 3, то будет выполнено 4 запроса).

Есть ли лучший способ сделать это с MySQL?

ДОБАВЛЕНО:

Будет ли что-то вроде этой работы (какой правильный синтаксис для этого, что у меня ниже, выдает ошибку)

CREATE TEMPORARY TABLE temp ENGINE=MEMORY
as (
(select DISTINCT id, date, requests from table1 WHERE id='$id')
UNION
(select DISTINCT id, date, requests from table2 WHERE id='$id')
UNION
(select DISTINCT id, date, requests from table3 WHERE id='$id')
)

0

Решение

попробуй это
SELECT * FROM information_schema.columns WHERE column_name = 'column_name';

или же

SELECT table_name, column_name FROM information_schema.columns WHERE column_name = 'column_name';

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]