Вопрос

То, что я имею в виду: есть ли таблица с 20 столбцами больше от индексации определенного поля (один, который используется в запросах поиска), чем таблица, которая имеет всего 4 столбца?

Также: каков вред в добавлении индекса к полям, с которыми я не буду искать, но мог бы позже в будущем? Есть ли негативное для добавления индексов? Это просто размер, который он занимает на диске, или он может заставить работать медленнее, чтобы добавить ненужные индексы?

извлеченный из комментариев

Я использую Postgres (последняя версия), и у меня есть один стол, который у меня будет много таких запросов типа, и т. Д., Но ценности, несомненно, часто меняются, так как мои клиенты имеют доступ к CRUD. Должен ли я могу идею индексов? Они просто головная боль?

Это было полезно?

Решение

В таблице с 20 столбцами выигрывают больше от индексации определенного поля (один, который используется в запросах поиска Search-is), чем таблица, которая имеет всего 4 столбца?

Нет, количество столбцов в таблице не имеет никакого подшипника на льготы от индекса.

Индекс исключительно на значении в указанном столбце (и); Это частота значений, которые повлияют на то, сколько увидит ваши запросы. Например, колонна, содержащая логическое значение, является плохим выбором для индексации, потому что это 50/50 шанс, что значение будет одним или другим значением. При разделении 50/50 по всем рядам индекс не сужает поиск определенного ряда.

Каков вред в добавлении индекса в поля, с которыми я не буду искать, но позже в будущем?

Индексы ускоряют только поиск данных, когда их можно использовать, но они отрицательно влияют на скорость операторов вставки / обновления / удаления. Индексы также требуют обслуживания, чтобы сохранить их значение.

Другие советы

Если вы делаете как запросы, вы можете обнаружить, что индексы в любом случае не помогут. Хотя индекс может улучшить этот запрос ...

select * from t23
where whatever like 'SOMETHING%'
/

... Маловероятно, что индекс поможет с любым из этих запросов ...

select * from t23
where whatever like '%SOMETHING%'
/

select * from t23
where whatever like '%SOMETHING'
/

Если у вас есть бесплатные текстовые поля, и ваши пользователи нужны нечеткое совпадение, то вы должны посмотреть на полную текстовую функцию Postgres. Это использует оператор матча, а не понравился, и который требует специального типа индекса. Узнать больше.

Есть GOTCHA, что заключается в том, что полные текстовые индексы более сложны, чем обычные, и Связанные дизайнерские решения не просто. Отказ Также некоторые реализации требуют Дополнительные мероприятия по техническому обслуживанию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top