Это скорее концептуальный вопрос.Он вдохновлен использованием какой-то чрезвычайно большой таблицы, где даже простой запрос занимает много времени (правильно проиндексирован).Мне было интересно, есть ли лучшая структура, чем просто позволить столу постоянно расти.
В целом я имею в виду более 10 000 000 записей, которые растут каждый день примерно на 10 000 в день.Такая таблица будет бить 10 000 000 дополнительных записей каждые 2,7 года.Допустим, более поздние записи больше всего доступны, но старые должны оставаться доступными.У меня есть две концептуальные идеи, чтобы ускорить его.
1) Ведение основной таблицы, которая содержит все данные, проиндексированные по дате в обратном порядке.Создайте отдельное представление для каждого года, содержащее только данные за этот год.Затем при запросе, и предположим, что запрос должен получить только несколько записей за три года, я мог бы использовать объединение для объединения трех представлений и выбора из них.
2) Другой вариант будетбыть, чтобы создать отдельную таблицу для каждого года.Затем снова используйте объединение, чтобы объединить их при запросе.
Есть ли у кого-нибудь еще какие-либо идеи или концепции?Я знаю, что это проблема, с которой столкнулся Facebook, так как вы думаете, как они справились с этим?Я сомневаюсь, что у них есть одна таблица (status_updates), которая содержит 100 000 000 000 записей.