Поскольку у вас есть inkex (id, effdt), я думаю, что вы уже описали наиболее эффективный способ запроса схемы.По крайней мере, метод, который вы описываете, - это способ, которым я это делаю ...
SELECT
*
FROM
master
INNER JOIN
child1
ON child1.id = master.id
INNER JOIN
child2
ON child2.id = master.id
WHERE
master.effdt = (SELECT TOP 1 effdt FROM master AS lookup WHERE id = master.id)
AND child1.effdt = (SELECT TOP 1 effdt FROM child1 AS lookup WHERE id = child1.id)
AND child2.effdt = (SELECT TOP 1 effdt FROM child2 AS lookup WHERE id = child2.id)
Разрешение различных подзапросов (я использую TOP 1, MAX () также работает) затем становится поиском по индексу.
Есть альтернатива, хотя я не помню, чтобы было какое-то существенное повышение производительности ...
SELECT
*
FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY id ORDER BY effdt), * FROM master) AS master
INNER JOIN
(SELECT ROW_NUMBER() OVER (PARTITION BY id ORDER BY effdt), * FROM child1) AS child1
ON child1.id = master.id
INNER JOIN
(SELECT ROW_NUMBER() OVER (PARTITION BY id ORDER BY effdt), * FROM child2) AS child2
ON child2.id = master.id
WHERE
master.seq_id = 1
AND child1.seq_id = 1
AND child2.seq_id = 1
Кроме того, как упоминалось Мазиаром, есть опция CROSS APPLY ...
SELECT
*
FROM
master
CROSS APPLY
(SELECT TOP 1 * FROM child1 WHERE id = master.id ORDER BY effdt DESC) AS child1
CROSS APPLY
(SELECT TOP 1 * FROM child2 WHERE id = master.id ORDER BY effdt DESC) AS child2
WHERE
master.effdt = (SELECT TOP 1 effdt FROM master AS lookup WHERE id = master.id)