Храните по одному, пока вы абсолютно не можете больше, а затем создайте что-нибудь еще вокруг своей конкретной проблемы.
SQL - это декларативный язык, что означает «дать мне все записи, соответствующие X», не сообщает серверу db как для этого. Следовательно, у вас есть много способов помочь серверу db сделать это быстро, даже если у вас сотни миллионов записей. Кроме того, РСУБД оптимизированы для этой проблемы на протяжении многих лет опыта, поэтому до определенного момента вы не будете бить такую систему, как PostgreSQL.
Как говорится, преждевременная оптимизация - это корень всего зла.
Итак, давайте посмотрим на два пути: PostgreSQL может пройти через таблицу, чтобы дать вам результаты.
Первый - это последовательное сканирование, в котором он выполняет итерацию по ряду страниц, просматривает каждую страницу для значений и возвращает записи вам. Это работает лучше, чем любой другой метод для очень маленьких таблиц. Он медленный на больших таблицах. Сложность - это O (n), где n - размер таблицы, для любого количества записей.
Таким образом, вторым подходом может быть сканирование индекса. Здесь PostgreSQL пересекает серию страниц в индексе b-дерева для поиска записей. Сложность - это O (log (n)), чтобы найти каждую запись.
Internal PostgreSQL хранит строки в партиях с фиксированными размерами, как страницы. Он уже решает эту проблему для вас. Если вы попытаетесь сделать то же самое, у вас есть партии записей внутри партий записей, которые обычно являются рецептом для плохих вещей.
Я не уверен, что вы просите. Зачем вам нужно перебирать записи? Базы данных отлично подходят для поиска, вот для чего они нужны. –
@ DanielRoseman, но верно делать то же самое действие несколько раз в минуту - плохая идея? – techydesigner
* Что * операция? –