Всегда ли упорядочены результаты больших запросов, то есть использование OFFSET имеет смысл пропускать строки? - PullRequest
0 голосов
/ 30 апреля 2020

Другими словами, каждый раз результаты запроса на выборку выдаются, поэтому эти 2 всегда будут давать уникальные значения:

select * from bigquery-public-data.crypto_ethereum.balances limit 10 OFFSET 100

select * from bigquery-public-data.crypto_ethereum.balances limit 10 OFFSET 2000

Если конечно таблица имеет уникальные значения ... Мне просто любопытно, если без использования условия "order" таблица всегда детерминистическая / последовательная или результаты могут дублироваться, если они вернулся действительно случайно? 10x!

1 Ответ

0 голосов
/ 30 апреля 2020

Мне просто любопытно, если без использования предложения "order" таблица всегда будет детерминированной / последовательной или результаты могут дублироваться, если они возвращаются действительно случайным образом.

Нет. SQL таблицы представляют неупорядоченный набор строк. Там нет внутреннего порядка строк. Если не указано условие order by, нет гарантии, что два последовательных исполнителя одного и того же запроса дадут одинаковый результат. База данных может возвращать строки в любом порядке.

Как следствие, результаты запроса с условием ограничения строк, но без условия order by, не являются детерминированными c. Сделайте добавьте к этим запросам order by, иначе вы рано или поздно столкнетесь с удивительным и трудным для отладки поведением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...