@MishaXXL

С какого количества записей индексация имеет смысл?

Создал таблицу на 300 пользователей
Сделал выборку по определенному имени, вышло 75-90 мсек.
SELECT name FROM users WHERE name='Mike';
Добавил индекс CREATE INDEX name_idx ON users (name);
Выборка так и осталась в пределах 75-85 мсек.

С какого количества записей имеет смысл начинать заниматься созданием индексов?
  • Вопрос задан
  • 145 просмотров
Решения вопроса 4
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
С какого количества записей индексация имеет смысл?

С того момента, когда планировщик начал показывать приличную разницу, как только получаете прирост - используйте индексацию, не получаете - не используйте.
Сделал выборку по определенному имени, вышло 75-90 мсек.
SELECT name FROM users WHERE name='Mike';
Добавил индекс CREATE INDEX name_idx ON users (name);
Выборка так и осталась в пределах 75-85 мсек.

Вы сами задали вопрос и сразу же ответили на него...
Ответ написан
Комментировать
sergey-gornostaev
@sergey-gornostaev Куратор тега PostgreSQL
Седой и строгий
С того количества, на котором планировщик решит применять индекс, а это зависит от множества переменчивых факторов. Поэтому при проектировании БД нужно задумывать о сценариях её использования, а не о конкретных количествах строк.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev
software engineer
Как не будет хватать производительности, можно будет задуматься. Но 300 это вообще не объем
Ответ написан
Комментировать
AshBlade
@AshBlade
Просто хочу быть счастливым
Делать индексацию ради индексации - плохая затея.
На малом количестве записей она либо заметна не будет, либо планировщик просто не будет его (индекс) использовать.
Когда и на что делать индексы лучше определять:
- Это основной юз. кейс приложения - например поиск нужного документа по номеру ФЗ
- Объемное тестирование показало большую деградацию производительности

Также меня интересует само индексированное поле. Если это просто имя пользователя (Иван, Алексей, Елена), то:
1. Индекс лучше не строить, т.к. селективность будет большой и индекс будет редко использоваться
2. Создать индекс на нормализованное имя - CREATE INDEX name_idx ON users (lower(name));

Но если это username/login (т.е. неизменяемый логин пользователя), то в принципе нормально.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы