Что значит «индексы PRIMARY и id кажутся равными, и один из них может быть удален». имею в виду? - PullRequest
11 голосов
/ 01 апреля 2011

Indexes Что это значит и как я могу это исправить?

Ответы [ 2 ]

15 голосов
/ 01 апреля 2011

У вас есть два отдельных индекса в одном поле вашей таблицы (id). Один из них подразумевается путем установки id в качестве PRIMARY KEY, другой вы, вероятно, создали явно. Требуется только один из них - оба могут привести к падению производительности из-за дополнительных обновлений индекса.

Просто сбросьте один из них, чтобы решить эту проблему.

Наличие ограничения PRIMARY KEY или UNIQUE на столбец (или поле, если вы хотите) таблицы по существу означает, что для каждой вставленной строки значение этого столбца должно быть уникальным и, следовательно, оно не должно существовать. в таблице. Наивный подход состоял бы в том, чтобы прочитать все существующие строки перед вставкой, но это сделало бы DB очень медленным, когда число строк было вставлено.

Чтобы справиться с этим, большинство (все?) Приличных механизмов баз данных будут неявно создавать индексы для таких полей, чтобы они могли быстро определить, существует ли уже значение в таблице, без необходимости отсканируйте все его строки.

В результате ручное создание индексов для полей, объявленных PRIMARY KEY или UNIQUE, не только избыточно, но и может привести к снижению производительности из-за дублирования работы, необходимой для обслуживания индексов.

0 голосов
/ 01 апреля 2011

Мне кажется, что оба эти индекса имеют одинаковые свойства и имеют разные Keynames, наличие двух индексов создаст дополнительное пространство для хранения, а также время выполнения для вставок (нет причин делать это Я могу думать) более подробно по теме можно найти здесь:

http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

http://dev.mysql.com/doc/refman/5.0/en/create-index.html

ПЕРВИЧНЫЙ создан phpMyAdmin. Мне кажется, и, похоже, индекс был создан вручную, но это дублирование работы.

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