Вы можете запросить метаданные следующим образом:
SELECT MAX(UPDATE_TIME)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'myschema'
Но вы сказали, что метаданные не достаточно точны для вас.
Вы должны получить последнюю updated_at
от несколько таблиц:
SELECT MAX(updated_at) AS max_updated_at
FROM (
SELECT MAX(updated_at) AS updated_at FROM mytable1
UNION SELECT MAX(updated_at) FROM mytable2
UNION SELECT MAX(updated_at) FROM mytable3
UNION SELECT MAX(updated_at) FROM mytable4
UNION ...
) AS t
Или в качестве альтернативы:
SELECT GREATEST(
t1.updated_at,
t2.updated_at,
t3.updated_at,
t4.updated_at,
...
) AS max_updated_at
FROM
(SELECT MAX(updated_at) AS updated_at FROM mytable1) AS t1,
(SELECT MAX(updated_at) AS updated_at FROM mytable2) AS t2,
(SELECT MAX(updated_at) AS updated_at FROM mytable3) AS t3,
(SELECT MAX(updated_at) AS updated_at FROM mytable4) AS t4,
...
Ваш комментарий:
Извинения за неправильное толкование вашего вопроса. Я предположил, что «время последнего обновления для коллекции таблиц» означает время последнего обновления для collection .
Чтобы получить последнее обновление для каждой таблицы, мы можем адаптируйте любую из трех альтернатив, которые я показал выше:
SELECT TABLE_NAME, UPDATE_TIME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'myschema'
Или:
SELECT 'mytable1' AS table_name, updated_at FROM mytable1
UNION SELECT 'mytable2', updated_at FROM mytable2
UNION SELECT 'mytable2', updated_at FROM mytable3
UNION SELECT 'mytable2', updated_at FROM mytable4
UNION ...
Или:
SELECT
t1.updated_at AS mytable1_updated_at,
t2.updated_at AS mytable2_updated_at,
t3.updated_at AS mytable3_updated_at,
t4.updated_at AS mytable4_updated_at,
...
FROM
(SELECT MAX(updated_at) AS updated_at FROM mytable1) AS t1,
(SELECT MAX(updated_at) AS updated_at FROM mytable2) AS t2,
(SELECT MAX(updated_at) AS updated_at FROM mytable3) AS t3,
(SELECT MAX(updated_at) AS updated_at FROM mytable4) AS t4,
...
Если столбец таблицы updated_at
имеет index, MySQL может быстро получить значение MAX()
из последней записи в индексе без необходимости сканирования всей таблицы.