Индекс Postgres
Я новичок в Postgres.
Мы внедрили SCD типа 2 в нашем проекте, используя Postgres. Входной файл представляет собой файл полного обновления с примерно 30 миллионами записей в день.
Номер счета является ключевым столбцом.
Приблизительное количество новых записей будет 20К / день. Если запись отсутствует в источнике, эта запись закрывается с конечной датой в целевом объекте. Примерное количество закрываемых записей - 10к / день
Время выполнения запроса постоянно увеличивается. Поможет ли индексация ускорить процесс?
Любое предложение по индексу, который будет использоваться?
2 ответа
Вы будете слишком внимательно смотреть на планы выполнения медленных запросов, чтобы определить, помогут ли индексы и какие индексы вы должны создать.
Правильный индекс часто очень помогает с запросом, и с базой данных только для чтения вы можете создать столько, сколько вам нужно.
Вы должны убедиться, что все индексы созданы после загрузки таблицы, так как индексы замедляют вставку. Либо удалите и заново создайте таблицу перед ежедневной загрузкой, либо обрежьте и удалите все индексы.
Эти 30 миллионов записей хранятся как каждая строка в базе данных? Хорошо, если это так, то индексирование (создание и ведение) многих записей также будет в некоторой степени обременительным для базы данных. Однако есть новый индекс, который представил PostgreSQL, который называется BRIN Index
что может помочь вам немного Я написал блог об этом несколько месяцев назад. Вы можете взглянуть на это и, очевидно, исследовать это больше.
http://blog.bajratechnologies.com/2016/09/16/Postgres-BRIN-Index/