Sobes.tech
Middle+

Il y a une table avec des millions d'enregistrements, mais les requêtes concernent presque toujours les dernières une ou deux semaines. Que feriez-vous pour l'optimiser?

sobes.tech IA

Réponse de l'IA

Для оптимизации запросов к таблице с миллионами записей, когда запросы почти всегда за последние 1-2 недели, можно:

  • Использовать партиционирование таблицы по дате, чтобы запросы сканировали только актуальные партиции.
  • Создать индекс по полю даты, чтобы ускорить фильтрацию.
  • Кэшировать результаты частых запросов, если данные не меняются часто.
  • Рассмотреть использование специализированных хранилищ для временных данных (например, time-series базы).

Пример партиционирования в PostgreSQL:

CREATE TABLE events (
    id SERIAL PRIMARY KEY,
    event_time TIMESTAMP NOT NULL,
    data JSONB
) PARTITION BY RANGE (event_time);

CREATE TABLE events_2024_06 PARTITION OF events
    FOR VALUES FROM ('2024-06-01') TO ('2024-07-01');

Так запросы с фильтром по дате будут работать быстрее, так как будут обращаться только к нужным партициям.