Запрос BigQuery с условием WHERE по timestamp и ID по-прежнему вызывает полное сканирование таблицы. Как с минимальными изменениями в SQL уменьшить количество сканируемых байтов?
Выберите ответ
Нажмите на вариант, чтобы проверить свой ответ.
Правильный ответ: Пересоздать таблицу со столбцом для партиционирования и столбцом для кластеризации..
Почему это правильный ответ
Правильный ответ — пересоздать таблицу с партиционированием по столбцу timestamp и кластеризацией по столбцу ID. Партиционирование по timestamp позволяет BigQuery сканировать только те разделы таблицы, которые соответствуют заданному диапазону времени в условии WHERE, значительно уменьшая объем сканируемых данных. Кластеризация по ID дополнительно оптимизирует запросы, которые фильтруют или агрегируют данные по ID в пределах партиции, поскольку связанные данные хранятся вместе. Создание отдельной таблицы для каждого ID непрактично и усложняет управление. Использование LIMIT уменьшает количество возвращаемых строк, но не влияет на объем сканируемых байтов. Флаг bq query --maximumbytesbilled предотвращает выполнение запроса, если он превышает заданный лимит, но не оптимизирует сам запрос и не уменьшает объем сканируемых данных.
Сдайте экзамен — без бесконечного поиска ответов
Получите все проверенные вопросы и объяснения для этого экзамена в одном месте и сэкономьте часы подготовки. 1000+ сертификаций · 20+ языков · начните бесплатно.
Сдайте экзамен быстрее → Карта не требуется