Старая система прибыла в наш офис для некоторых изменений и исправлений, но она также страдает от проблем с производительностью.Мы не знаем точно, что является источником этой медлительности.
Пока мы проводили рефакторинг старого кода, мы нашли несколько SQL-запросов со следующим шаблоном (запросы упрощены, например, для целей):
SELECT
(
SELECT X
FROM A
WHERE A.id = TABLE.id
) AS COLUMN1,
(
SELECT Y
FROM B
WHERE B.id = TABLE.id
) AS COLUMN1,
(
SELECT Z
FROM C
WHERE C.id = TABLE.id
) AS COLUMN1,
...
FROM
TABLE
WHERE
TABLE.id = @param;
Эти запросы выполняют несколько внутренних подзапросов из каждого возвращаемого столбца.
Мы планируем переписать эти запросы по следующей схеме:
SELECT
A.X, B.Y, C.Z
FROM
TABLE
INNER JOIN A on A.ID = TABLE.ID
INNER JOIN B on B.ID = TABLE.ID
INNER JOIN C on C.ID = TABLE.ID
WHERE
TABLE.id = @param;
С внутренними объединениями их легче читать и понимать , но действительно ли это быстрее?Это лучший способ написать их?К сожалению, первый, который мы переписали, не улучшил время запроса, он сделал запрос немного медленнее.
Вот мой вопрос: должны ли мы переписать все эти запросы?Являются ли эти подзапросы хорошим способом сделать эту работу?Они быстрее, чем способ внутреннего соединения?