Используя Amazon Redshift, скажем, у меня есть следующее представление:
CREATE VIEW my_view AS
SELECT
col1,
col2,
col3,
col4
FROM a_source_table
Из того, что я понимаю, когда я запрашиваю его, my_view переводится в подзапрос. Это будет означать, что если я сделаю запрос только по col1 из my_view, весь запрос, определяющий my_view, все равно будет выполняться:
SELECT col1 FROM my_view
будет переведен в:
WITH step1 AS (
SELECT
col1,
col2,
col3,
col4
FROM a_source_table
)
SELECT col1 from step1
... В этом случае Если я удалю некоторые столбцы из запроса, определяющего my_view, получу ли я лучшую производительность для запросов, обращающихся к my_view?
Или Redshift оптимизирован для использования сокращенной версии запроса, определяющего my_view, включая только необходимые столбцы? (Что означало бы, что в моем примере запрос будет фактически переведен на:)
WITH step1 AS (SELECT col1 FROM a_source_table) SELECT col1 FROM step1