Какой запрос имеет лучшую производительность? - PullRequest
0 голосов
/ 05 декабря 2018
SELECT *
FROM { SELECT * FROM BigMillionTable UNION ALL SELECT * FROM SmallTensTable } 
WHERE (some_condition)

Vs

SELECT * 
FROM BigMillionTable 
WHERE (some_condition)

UNION ALL

SELECT * 
FROM SmallTensTable
WHERE (some_condition) 

Мои вопросы:

  1. Нужно ли в первом запросе поместить все строки в BigMillionTable в основную память для выполнения UNION ALL?
  2. Какой запрос обеспечивает более высокую производительность?

1 Ответ

0 голосов
/ 05 декабря 2018

Условие where фактически выполняется перед выбором, поэтому во 2-м запросе вы выполняете объединение всего на меньшем наборе, так что это должно быть быстрее.

В 1-м запросе внутренний запроссначала запустится, что объединит все по всей таблице, а затем будет выполнено where перед выбором записей.

Так что да, 2nd обеспечит лучшую производительность по сравнению с первым

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...