SQL Когда НЕ использовать индекс - PullRequest
1 голос
/ 01 марта 2012

У меня есть таблица, которая отслеживает временные интервалы для планирования.Это запись «блокировок», так что 2 пользователя не будут записывать встречи в одном и том же временном интервале.

У нас возникла проблема взаимоблокировки, и я заметил, что в этой таблице 5 индексов.

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

5 индексов для меня кажутся излишними.Я не думаю, что мне нужны какие-либо индексы для таблицы с количеством строк менее 1000.

Правильно ли я в этом предположении?

TIA

Ответы [ 2 ]

2 голосов
/ 01 марта 2012

Быстрый быстрый ответ: отбросьте все индексы, кроме уникального индекса первичного ключа, в сравнительно небольших таблицах (обычно менее 100 000 строк).

0 голосов
/ 01 марта 2012

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

This table is read and written frequently but it would rarely have more than a few hundred rows it.

Блокировка строк - обычная ситуация. Иногда может случиться и тупик. Ваш поставщик БД обрабатывает тупик? Это должно выпустить это само. Вероятно, происходит блокировка, потому что вы пытаетесь обновить строки в порядке A, B в 1 переводе, а вторая транзакция обновляет строки в порядке B, A.

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