Мои тестовые данные состоят из 27 768 767 строк. Моя схема включает столбец «сообщение» строки типа. Длина этих строк варьируется, но обычно составляет пару сотен символов. Также есть столбец user_id типа int. Вот два запроса, которые возвращают 0 строк (предложения where ничего не соответствуют моим данным). Однако, к моему удивлению, они оба сообщают об обработке 4,69 ГБ.
SELECT * FROM logtesting.logs WHERE user_id=1;
Query complete (1.7s elapsed, 4.69 GB processed)
.
SELECT * FROM logtesting.logs WHERE message CONTAINS 'this string never appears';
Query complete (2.1s elapsed, 4.69 GB processed)
Поскольку целые числа хранятся в 8 байтах, я ожидал, что данные, обработанные в первом (user_id) будет примерно 213 МБ (28 миллионов строк * 8 байтов на user_id). Последний (сообщение) запрос сложнее оценить, поскольку строки различаются по длине, но я ожидаю, что он будет в несколько раз больше, чем первый запрос (user_id).
Правильно ли я понимаю, как BigQuery рассчитывает стоимость запросов?