Несколько таблиц против проиндексированных строк - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть вопрос, который был поднят в недавней беседе с коллегой.

Предположим, что у вас есть одна таблица с 100 000 000 строк, и у каждой из этих строк есть индексированный столбец (varchar). Для этого столбца есть 1000 уникальных значений, поэтому каждое значение имеет 100 000 строк, связанных с ним. Я хочу найти все строки, которые относятся к одному из уникальных значений (я предоставлю указанное значение), но также с некоторой дополнительной логикой фильтрации (не важно).

Было бы быстрее, медленнее или столь же быстро хранить 100 000 строк в 1000 различных таблицах и искать только нужную мне таблицу или использовать метод, указанный выше?

Предположим, что все таблицы будут иметь одинаковую схему.

1 Ответ

3 голосов
/ 14 декабря 2011

Поиск только за нужным столом будет быстрее. Это все равно, что спросить: быстрее ли искать главу X книги, или просто дать книгу, которая является только главой X.

Это, однако, неправильно. Как вы будете определять, какую таблицу запрашивать? 1000 операторов IF, или двоичное дерево операторов IF, чтобы попасть туда за 10 прыжков? Независимо от того, что вы пишете, я НЕ ожидаю, что какой-либо из них будет быстрее, чем использование индекса объединенной таблицы.

Не говоря уже о суматохе 1000 таблиц.


Существует аргумент (и время и место) для разделения данных, но это очень плохой пример.

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