Каковы преимущества и недостатки использования «Частичного индекса»? - PullRequest
3 голосов
/ 12 ноября 2008

PostgreSQL позволяет создавать 'Частичные индексы', которые в основном являются индексами с условными предикатами. http://www.postgresql.org/docs/8.2/static/indexes-partial.html

Во время тестирования я обнаружил, что они работают очень хорошо для случая, когда запрос обращается только к определенным 12 строкам в таблице с 120 тыс. Строками.

Но прежде чем мы это развернем, есть ли какие-то недостатки или предостережения, о которых нам следует знать?

Ответы [ 2 ]

6 голосов
/ 23 декабря 2008

Главное предостережение - не использовать их ненадлежащим образом. Они хороши для определения строк, которые соответствуют одному набору критериев, где эти строки составляют меньшинство в большой таблице.

Возьмите таблицу Orders, например, со столбцом order_status и распределите ваши данные по статусам заказа следующим образом:

  • Новый 5%
  • Недопоставлено 2%
  • В пути 5%
  • Завершено 85%
  • Возвращено 3%

Если вы очень часто запрашиваете where order_status = 'New', чтобы получить список новых заказов, а затем большую часть времени просто ссылаетесь на заказы по идентификатору, тогда частичный индекс будет полезен. В вашем примере 12 строк из 120 КБ это еще более верно.

4 голосов
/ 12 ноября 2008

Pro:

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

Con:

Поскольку это больше не является реальным индексом, если вы выполняете полное объединение или фильтрацию по значениям, не охватываемым индексом, производительность будет падать с ростом размера таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...