Ако приемем, че питате за обичайната функция за „подсказки за индекси“, която се намира в много бази данни, PostgreSQL не предоставя такава функция. Това беше съзнателно решение, взето от екипа на PostgreSQL. Добър преглед на това защо и какво можете да направите вместо това можете да намерите тук. Причините са основно, че това е хак за производителност, който има тенденция да създава повече проблеми по-късно, когато данните ви се променят, докато оптимизаторът на PostgreSQL може да преоцени плана въз основа на статистиката. С други думи, това, което днес може да бъде добър план за заявка, вероятно няма да бъде добър план за заявка за всички времена, а подсказките за индекс налагат конкретен план за заявка за всички времена.
Като много тъп чук, полезен за тестване, можете да използвате enable_seqscan
и enable_indexscan
параметри. Вижте:
- Проучване на използването на индекс
enable_
параметри
Те не са подходящи за текуща производствена употреба . Ако имате проблеми с избора на план за заявка, трябва да видите документацията за проследяване на проблеми с производителността на заявката. Не задавайте просто enable_
параметри и си тръгнете.
Освен ако нямате много основателна причина да използвате индекса, Postgres може да прави правилния избор. Защо?
- За малки таблици е по-бързо да правите последователни сканирания.
- Postgres не използва индекси, когато типовете данни не съвпадат правилно, може да се наложи да включите подходящи прехвърляния.
- Настройките на вашия плановик може да причиняват проблеми.
Вижте също тази стара публикация в дискусионната група.