Pull to refresh

Comments 2

Вот этот вот (вполне осмысленный) совет про * — ему по-моему лет 20, если не все 30 :)

Впрочем, более новых сущностей типа колоночного формата паркет это все равно касается по полной программе — если вытащить из паркета только одну нужную колонку, можно сэкономить 99% ресурсов.

Интересный комментарий из ТГ:

От Select * есть технологический антидот - SQLFluff, rule_L044

Про CTE хотелось бы узнать, какие парсеры-компиляторы умные, какие нет; и почему нельзя рассчитывать на умные.


Привет, спасибо.

Да, SQLFluff отдельная история.
В особенности с dbt (шаблонизированным кодом). Ее можно встраивать как проверку на этапе DEV – тогда каждый разработчик/аналитик сам отвечает.
Либо на этапе TEST/CI – как проверка кода, тогда в этом контуре нужно будет скомпилировать код и проверить.

По поводу парсеров – я имел в виду сами аналитические движки. Часть из них может составить полный план запроса и оптимизировать (переписать).
Например, 3 CTE читающие разные таблицы select *, финальный запрос с применением фильтра WHERE на даты + категории.
Часть движков сможет эти фильтры переместить сразу в изначальные CTE, чтобы не читать все строки. Другие движки будут полностью собирать 3 CTE-таблицы в промежуточную область, и только потом фильтровать, что будет значительно дольше.

Sign up to leave a comment.