• Photos
  • Schedule
  • Talks
  • Speakers
  • Contacts
  • F.A.Q.
  • En Ru

    Max Boguk

    Max Boguk Data Egret

    7 July

    Talk

    Unconventional techiniques for query optimization, or how teach an elephant to dance rock-n-roll

    SQL запросы обычно оптимизируются путем добавления дополнительных индексов (иногда с минимальным переписыванием запроса), при этом оставляя основную идею запроса неизменной. Во многих случаях это не является самым эффективным методом оптимизации, и требуется полное переосмысление и переписывание запроса.

    В этом докладе я представлю обзор нескольких малоизвестных и/или редкоиспользуемых техник оптимизации запросов:
    - использование IOS (index-only scan) в ситуациях, где напрямую они не применимы;
    - использование техники loose index scan в различных задачах;
    - внесение LIMIT/OFFSET условий внутрь сложных JOIN;
    - и тому подобные фокусы.

    Используя эти техники, я покажу как оптимизировать популярный в реальных задачах, но очень неудобный для базы запрос вида WHERE f1 IN (LIST) ORDER BY f2 LIMIT ... OFFSET ... (простейшая лента новостей по авторам и подобные задачи).

    В презентации будет представлено сравнение нескольких разных реализаций решения одной и той же задачи: прямое/простейшее решение, оптимизированная версия прямого решения без переделки идеи, реализация альтернативного алгоритма на pl/pgsql и, наконец, реализация альтернативного алгоритма в виде SQL запроса.

    В качестве дополнительного бонуса станет видно, каким образом возможно сконвертировать почти любой read-only статический pl/pgsql код в обычный sql запрос.

    SQL запросы обычно оптимизируются путем добавления дополнительных индексов (иногда с минимальным переписыванием запроса), при этом оставляя основную идею запроса неизменной. Во многих случаях это не является самым эффективным методом оптимизации, и требуется полное переосмысление и переписывание запроса.

    В этом докладе я представлю обзор нескольких малоизвестных и/или редкоиспользуемых техник оптимизации запросов:
    - использование IOS (index-only scan) в ситуациях, где напрямую они не применимы;
    - использование техники loose index scan в различных задачах;
    - внесение LIMIT/OFFSET условий внутрь сложных JOIN;
    - и тому подобные фокусы.

    Используя эти техники, я покажу как оптимизировать популярный в реальных задачах, но очень неудобный для базы запрос вида WHERE f1 IN (LIST) ORDER BY f2 LIMIT ... OFFSET ... (простейшая лента новостей по авторам и подобные задачи).

    В презентации будет представлено сравнение нескольких разных реализаций решения одной и той же задачи: прямое/простейшее решение, оптимизированная версия прямого решения без переделки идеи, реализация альтернативного алгоритма на pl/pgsql и, наконец, реализация альтернативного алгоритма в виде SQL запроса.

    В качестве дополнительного бонуса станет видно, каким образом возможно сконвертировать почти любой read-only статический pl/pgsql код в обычный sql запрос.

    Back to the list of talks

    Buy tutorial:

    Price:
    Enter your e-mail and we will send you payment details soon.