Следующие просто безумные разглагольствования и бред ...
Если вы оставите все данные в одной таблице (без разделения), у вас будет O (log n) времени поиска с использованием ключа. Давайте возьмем худший индекс в мире, двоичное дерево. Каждый узел дерева имеет ровно один ключ. Идеально сбалансированное двоичное дерево с 268 435 455 (2 ^ 28 - 1) вершинами дерева будет иметь высоту 28. Если вы разбьете это двоичное дерево на 16 отдельных деревьев, вы получите 16 двоичных деревьев с 16 777 215 (2 ^ 24 - 1) узлы дерева для высоты 24. Путь поиска сокращен на 4 узла, что на 14,2857% меньше высоты. Если время поиска в микросекундах, сокращение времени поиска на 14,2857% практически невозможно.
Теперь в реальном мире индекс BTREE будет иметь триоды с несколькими ключами. Каждый поиск BTREE будет выполнять двоичный поиск на странице с возможным переходом на другую страницу. Например, если бы каждая страница BTREE содержала 1024 ключа, то высота дерева 3 или 4 была бы нормой, в действительности это была бы небольшая высота дерева.
Обратите внимание, что разделение стола не уменьшает высоту BTREE, которая уже мала. Учитывая разделение 260 миллиардных рядов, даже существует высокая вероятность наличия нескольких BTREE с одинаковой высотой. Поиск ключа может проходить по всем корневым страницам BTREE каждый раз. Только один будет выполнять путь необходимого диапазона поиска.
Теперь расширим это. Все разделы существуют на одной машине. Если у вас нет отдельных дисков для каждого раздела, у вас будет дисковый ввод-вывод и вращение шпинделя в качестве автоматического узкого места за пределами производительности поиска раздела.
В этом случае разделение по базе данных также ничего не покупает, если идентификатор является единственным ключом поиска, который имеет полный набор.
Разделение данных должно служить для группировки данных, которые логически и связно находятся в одном классе. Производительность поиска по каждому разделу не должна быть основным фактором, если данные правильно сгруппированы. Как только вы добились логического разбиения, сконцентрируйтесь на времени поиска. Если вы просто разделяете данные только по идентификатору, возможно, что многие строки данных никогда не будут доступны для чтения или записи. Теперь это должно быть главным соображением: найдите все идентификаторы, к которым чаще всего обращаются, и разделите их . Все менее часто используемые идентификаторы должны находиться в одной большой архивной таблице, которая все еще доступна при поиске по индексу для этого запроса «один раз в голубой луне».
Общее влияние должно состоять в том, чтобы иметь как минимум два раздела: один для часто используемых идентификаторов, а другой - для остальных идентификаторов. Если часто используемые идентификаторы достаточно велики, вы можете разделить их.