которой строки появляются раз в минуту, и запрос count(*), который считает все это очень долго.
count(*) будет работать долго, к сожалению. надо думать об альтернативных методах оценки строк. в данном случае следует показать EXPLAIN (analyze, buffers) запроса как минимум
А вам точно необходимо раз в минуту знать точное количество строк? 🙂 Может лучше, например, знать количество новых строк, появившихся с последнего раза? для этого сохраняете где-нибудь последнее id таблицы, и в следующий раз считаете количество строк, у которых ид больше сохранённого. Или получаете приблизительую оценку при помощи TABLESAMPLE, например: select count(*) * 5 from table tablesamle system(20). TABLESAMPLE берёт не всю таблицу, а определённый процент от неё, отталкиваясь от числа в скобках (в данном примере 20%). (поэтому, count уммножается на 5, чтобы довести оценку до 100%)
Обсуждают сегодня