Sobes.tech
Middle+

Lentelė su milijonais įrašų, tačiau užklausos beveik visada yra paskutinių vienos ar dviejų savaičių. Ką darytum, kad ją optimizuotum?

sobes.tech AI

Atsakymas iš AI

Для оптимизации запросов к таблице с миллионами записей, когда запросы почти всегда за последние 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');

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