Вам нужно явно создать индекс или он неявный при определении первичного ключа? Одинаков ли ответ для MyISAM и InnoDB?
243
Первичный ключ всегда индексируется. Это то же самое для MyISAM и InnoDB, и в целом верно для всех механизмов хранения, которые поддерживают индексы.
Согласно http://dev.mysql.com/doc/refman/5.0/en/constraint-primary-key.html может показаться, что это неявно
источник
Несмотря на то, что это было задано в 2009 году, я решил опубликовать фактическую ссылку на документацию MySQL по первичным ключам. http://dev.mysql.com/doc/refman/5.5/en/optimizing-primary-keys.html
Ссылку на MySQL 5.0 смотрите по адресу : http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html.
источник
Первичный ключ неявно индексируется как для MyISAM, так и для InnoDB. Вы можете проверить это с помощью EXPLAIN в запросе, который использует первичный ключ.
источник
Вам не нужно явно создавать индекс для первичного ключа ... это делается по умолчанию.
источник
Я думаю, что это ответ
источник
Индексы лучше всего использовать для столбцов, которые часто используются в предложениях where, и в любом виде сортировки, например, «сортировать по». Возможно, вы работаете с более сложной базой данных, поэтому хорошо запомнить несколько простых правил.
Индексы ускоряются, где пункты и порядок по. Не забудьте подумать, КАК ваши данные будут использоваться при создании таблиц. Есть еще несколько вещей, которые нужно запомнить. Если ваша таблица очень маленькая, т. Е. Всего несколько сотрудников, то хуже использовать индекс, чем не указывать его и просто позволить ему сканировать таблицу.
Индексы действительно пригодятся только для таблиц с большим количеством строк.
Еще одна вещь, о которой следует помнить, это является недостатком в ситуации с базой данных нашего сотрудника, это то, что, если столбец имеет переменную длину, индексы (а также большая часть MySQL) работают гораздо менее эффективно.
Не забывайте и о присоединениях! Индексированные поля объединения ускоряют процесс.
источник
Первичный ключ всегда автоматически индексируется и уникален. Поэтому будьте осторожны, чтобы не создавать избыточные индексы.
Например, если вы создали таблицу как таковую
поскольку вы хотите проиндексировать первичный ключ и применить к нему ограничение уникальности, вам действительно придется создать три индекса
foo
!источник
Можно рассматривать столбец первичного ключа как любой другой индексированный столбец с ограничениями первичного ключа.
В большинстве случаев нам нужен как первичный ключ, так и индексированные столбцы / столбцы в таблице, потому что наши запросы к таблице могут фильтровать строки на основе столбца / столбцов, который не является первичным ключом, в этом случае мы обычно индексируем эти столбцы / столбцы. также.
источник