Когда «возьми 10 лучших записей» превращается в кошмар для базы данных

Запрос вида ORDER BY ... LIMIT 10 кажется одной из самых простых операций в SQL. Но в реальных системах на PostgreSQL эта задача может неожиданно превратиться в серьёзную проблему.

Команда ParadeDB показала довольно наглядный пример: простой запрос на 100-миллионной таблице выполняется примерно за 5 миллисекунд, но стоит добавить фильтр или полнотекстовый поиск — и время выполнения может вырасти до 30–37 секунд.

Это не баг и не плохая конфигурация базы. Это фундаментальное ограничение архитектуры традиционных индексов.

Разберёмся, почему это происходит и почему базы данных начинают заимствовать идеи у поисковых движков вроде Lucene.

В терминологии баз данных Top K означает:

Примеры таких запросов встречаются буквально везде:




logo

USTAV.GROUP публикует актуальные сюжеты о лучших людях, компаниях региона и России.

Читайте, высказывайтесь, делитесь секретами, делайте тайное явным!

Любое копирование, в т.ч. отдельных частей текстов или изображений, публикация и републикация, перепечатка или любое другое распространение информации, в какой бы форме и каким бы техническим способом оно не осуществлялось, строго запрещается без предварительного письменного согласия со стороны редакции. Допускается цитирование материалов сайта без получения предварительного согласия, но в объеме не более одного абзаца и с обязательной прямой, открытой для поисковых систем гиперссылкой на сайт (с указанием названия ustav.group) не ниже, чем во втором абзаце текста.

Наш e-mail: [email protected]

Яндекс.Метрика

Copyright © 2011-2026 . http://u-stav-group.com.
При использовании материалов сайта гиперссылка на Ustav.group обязательна. Редакция - [email protected]