Это ожидаемое поведение для кластеризованных таблиц - как только обработчик запросов откроет достаточно кластеров для получения желаемых результатов, он прекратит сканирование и зарядит только для отсканированных до сих пор байтов.
Например:
SELECT * WHERE x=1 LIMIT 1
остановится после того, как найдет первое, если x не кластеризован, и выполнит полное сканирование таблицы, если никого нет.
Фактические запросы к той же таблице:
SELECT *, RAND()
FROM `fh-bigquery.wikipedia_v3.pageviews_2017`
WHERE datehour >= "2017-12-01"
AND title LIKE '%hoffa%'
LIMIT 1
Query complete (2.1s elapsed, 111 MB processed)
Query complete (1.8s elapsed, 126 MB processed)
Query complete (1.9s elapsed, 114 MB processed)
SELECT *, RAND()
FROM `fh-bigquery.wikipedia_v3.pageviews_2017`
WHERE datehour >= "2017-12-01"
AND title LIKE '%khoffa%'
LIMIT 1
Query complete (2.9s elapsed, 2.52 GB processed)
Query complete (3.0s elapsed, 1.19 GB processed)
Query complete (1.9s elapsed, 114 MB processed)
SELECT *, RAND()
FROM `fh-bigquery.wikipedia_v3.pageviews_2017`
WHERE datehour >= "2017-12-01"
AND title LIKE '%fhoffa%'
LIMIT 1
Query complete (5.1s elapsed, 188 GB processed)
Query complete (5.1s elapsed, 188 GB processed)
Query complete (5.1s elapsed, 188 GB processed)
'%hoffa%'
сканирует меньше данных, так как существует высокая вероятность найти их в первом открытом кластере. '%khoffa%'
труднее найти, поэтому иногда многим кластерам необходимобудьте открытыми - но вам может повезти, и вы найдете его на первом. '%fhoffa%'
там нет, поэтому BQ должен открыть каждый кластер в случае, если он был. - Я добавил
RAND()
для обеспечения отсутствия кэширования. - Большой выигрыш: Раньше BigQuery взимал 188 ГБ за подобные запросы, но теперь он может взимать 0,05% от этого в подобных случаях.
Обратите внимание, что если вы заставите BigQuery scкаждый кластер, то он вернулся к 188 ГБ.Например, если вы хотите найти верхнюю %hoffa%
(а не только первую):
SELECT *, RAND()
FROM `fh-bigquery.wikipedia_v3.pageviews_2017`
WHERE datehour >= "2017-12-01"
AND title LIKE '%hoffa%'
ORDER BY views DESC
LIMIT 1
Query complete (5.5s elapsed, 188 GB processed)
Подробнее о преимуществах кластеризованных таблиц: