С внутренней точки зрения методы в основном одинаковы.
За кулисами, когда вы создаете раздел на основе даты, движок SQL создает отдельные физические таблицы для каждого раздела, а затем выполняет то, что обычно является UNION
, когда вы запрашиваете саму таблицу.
Если вы используете в своем запросе фильтр для секционированной таблицы, который соответствует вашему полю секционирования (скажем, DateField
), то движок может перейти непосредственно к разделу, который вам нужен для данных. Если нет, то выполняется поиск каждой физической таблицы в логической таблице, необходимой для выполнения запроса.
Если ваши запросы будут включать фильтр дат (который звучит так же, как и ваш вопрос), то я не могу думать о преимуществах вашего "пользовательского" метода.
По сути, выбор, который вам нужно сделать, - это хотите ли вы отвечать за все логические и угловые случаи, связанные с разбиением, или довериться разработчикам из Microsoft, которые десятилетиями занимались этим, сделать это для вас
Для моих собственных целей, если для чего-то, что я хочу сделать, есть встроенный фреймворк, я всегда стараюсь его использовать. Это неизменно более быстрое, более стабильное и менее подверженное ошибкам, чем решение «по собственной инициативе».