Значит ли это, что если статистика, собранная из объектов базы данных, изменится, то результаты также изменятся?
Нет. Один и тот же запрос всегда будет давать одинаковые результаты (при условии, конечно, что базовые данные одинаковы). Автор объясняет, что база данных может выбрать ту или иную стратегию для обработки запроса (начиная с той или иной таблицы, используя тот или иной алгоритм для объединения строк и т. Д.). Это решение принимается на основе многих факторов, некоторые из которых основаны на информации, доступной в статистике.
Ключевым моментом является то, что SQL является декларативным языком, а не процедурным языком: вы не как база данных обрабатывает запрос, вы просто указываете какой результат вы хотите.
Однако, независимо от алгоритма, который выбирает база данных, результат гарантированно будет согласованным.
Обратите внимание, что существует крайний случай, когда база данных не гарантирует, что результаты будут одинаковыми при последовательном выполнении одного и того же запроса (например, запрос без предложения ограничения строки, но без order by
): клиент отвечает за предоставление запроса, результаты которого определены правильно (язык дает вам достаточно веревки, чтобы повеситься, если вы действительно этого хотите).