Задать вопрос
Ответы пользователя по тегу SQL
  • Как ускорить выполнение запроса в Postgres?

    @mOlind
    Есть несколько сторон ускорения работы запроса.
    1. оптимизация железа
    2. оптимизация базы данных
    3. оптимизация самого запроса

    1. Посмотреть загрузку жесткого диска во время вы полнения запроса через iostat -x 1
    Если %util уперлась в 100% думать над ускорением дисковой подсистемы, возможно ставить raid-0
    2. это обширная тема. Если вкратце надо разрешить базе использовать больше памяти во время выполнения запроса. См в сторону: shared_buffers, work_mem, maintenance_work_mem и статей по конфигурации postgresql
    3. Смотрим сами индексы и порядок работы с ними. Возможно индексы в столбцах надо поменять с GiST на GIN (www.postgresql.org/docs/9.1/static/textsearch-inde... Возможно надо сделать индексы по нескольким столбцам, чтобы констукция WHERE a AND b работала быстрее.
    Еще если во время работы запроса делается одно и тоже действие по преобразованию данных, возможно надо сделать предобработку данных, чтобы это вычисление уже было готово (лежало в отдельном столбце) и потом по нему строить индекс и гонять выборку.

    Гоняю запросы по данным мира в таблицах 100 млн записей. Сложные выборки обрабатываются меньше чем за секунду.
    Ответ написан
    Комментировать