Это потому, что это не настоящие разделы. Если вы строите индекс для каждой таблицы базы данных на основе даты, он проверит этот индекс и быстро вернет 0 строк. Если бы это было действительно разделено, то вы бы получили поведение, которое вы ожидаете. Но это не так, поэтому он проверит каждую таблицу в операторе union
, чтобы вернуть пустой набор результатов.
Пока план запроса показывает seek
, а не scan
, я бы не стал беспокоиться об этом, поскольку seeks
довольно быстр. В зависимости от scan
, однако, вы можете быть в порядке (это не черно-белое правило).