Вам нужно явно создать индекс, или это неявно при определении первичного ключа? Является ли ответ одинаковым для MyISAM и InnoDB?Является ли первичный ключ автоматически индексированным в MySQL?
ответ
Первичный ключ всегда индексируется. Это то же самое для MyISAM и InnoDB, и, как правило, верно для всех механизмов хранения, которые поддерживают индексы.
Вам не нужно явно создавать индекс для первичного ключа ... это делается по умолчанию.
Первичный ключ неявно индексируется как для MyISAM, так и для InnoDB. Вы можете проверить это, используя EXPLAIN в запросе, который использует первичный ключ.
По http://dev.mysql.com/doc/refman/5.0/en/constraint-primary-key.html казалось бы, что это будет подразумеваться
Я нашел эту ссылку, выполнив поиск, прежде чем задал вопрос. Но это не означает, что это или что-то еще многое в этом вопросе для меня. –
Страница, связанная с этим ответом, похоже, не говорит о том, является ли первичный ключ также индексом. Страницы, связанные с [answer] (https://stackoverflow.com/a/13979135/245602) от @fyrye, более актуальны. –
Даже если это было предложено в 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
Большинство MySQL индексов (ПЕРВИЧНЫЙ КЛЮЧ, Unique, ИНДЕКС, и FULLTEXT) хранятся в B-деревьях. Исключением является то, что индексы на пространственных типах данных используют R-деревья и что таблицы MEMORY также поддерживают индексы хеширования.
Я думаю, что это ответ
mysql> create table test(id int primary key, s varchar(20));
Query OK, 0 rows affected (0.06 sec)
mysql> show indexes from test \G
*************************** 1. row ***************************
Table: test
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: id
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
1 row in set (0.00 sec)
Индексы лучше всего использовать на столбцах, которые часто используются в пунктах, где и в какой-либо сортировки, например, «приказа». Возможно, вы работаете над более сложной базой данных, поэтому хорошо помнить несколько простых правил.
- Индексы замедляют вставки и обновления, поэтому вы хотите использовать их внимательно в столбцах, которые ЧАСТОТНО обновляются.
Индексы ускоряются там, где условия и порядок. Не забудьте подумать о том, как ваши данные будут использоваться при создании ваших таблиц. Есть еще несколько вещей, которые нужно запомнить. Если ваша таблица очень маленькая, т. Е. Только несколько сотрудников, хуже использовать индекс, чем оставить его, и просто позволить ему выполнять сканирование таблицы.
Индексы действительно пригождаются таблицами с большим количеством строк.
Еще одна вещь, которую следует помнить, то есть в ситуации базы данных нашего сотрудника, состоит в том, что если столбец является переменной длиной, индексы (как и большинство MySQL) работают намного менее эффективно.
Не забудьте присоединяться тоже! Индексированные поля соединения ускоряют работу.
Первичный ключ всегда автоматически индексируется и уникален. Поэтому будьте осторожны, чтобы не создавать избыточные индексы.
Например, если вы создали таблицу в качестве такого
CREATE TABLE mytable (foo INT NOT NULL PRIMARY KEY, bar INT NOT NULL, baz INT NOT NULL,
UNIQUE(foo), INDEX(foo)) ENGINE=InnoDB;
, потому что вы хотите, чтобы индекс первичного ключа и приведении в исполнение ограничение уникальности на нем, вы на самом деле в конечном итоге создание трех индексов foo
!
- 1. Является ли первичный ключ автоматически индексированным?
- 2. Является ли первичный ключ по умолчанию индексированным в oracle
- 3. Является ли первичный ключ автоматически индексом?
- 4. Является ли ключ строки таблицы HBase автоматически индексированным?
- 5. Является ли бессмысленный первичный ключ маркировки как null в mysql
- 6. MySQL: создать таблицу, первичный ключ автоматически сгенерирован?
- 7. Автоматически сгенерированный первичный ключ
- 8. Является ли COUNT (*) индексированным?
- 9. Является ли «MUL» приемлемым «Первичный ключ»?
- 10. MySql - Является ли первичный ключ уникальным по умолчанию?
- 11. Обновление MySQL первичный ключ
- 12. Первичный ключ Mysql composite
- 13. mysql распределенный первичный ключ
- 14. JPA первичный ключ автоматически генерировать
- 15. Композитный первичный ключ MySql
- 16. Необязательный первичный ключ mySQL
- 17. Сбросить первичный ключ в mysql?
- 18. MySQL использует первичный ключ
- 19. Mysql добавить первичный ключ
- 20. таблица mySQL, первичный ключ
- 21. Автоматически индексирует первичный ключ действительно хорошо?
- 22. Удалить первичный ключ в MySQL
- 23. Является ли первичный ключ автоматическим приращением, всегда необходимым в таблице?
- 24. MySQL Первичный первичный ключ MySQL от varchar до int
- 25. varchar() первичный ключ или int первичный ключ?
- 26. Нужен ли первичный ключ?
- 27. Следует ли индексировать первичный ключ?
- 28. php и первичный ключ mysql
- 29. следует ли использовать один первичный ключ или составной первичный ключ?
- 30. Первичный ключ из двух столбцов в MySQL
Если первичный ключ всегда индексируется, почему люди, говоря о архитектуре/производительности базы данных, всегда советуют новичкам SQL «убедиться, что их база данных правильно проиндексирована»? –
@tim: Они сообщают людям, что любые другие столбцы, используемые для фильтрации, группировки или сортировки, также имеют индексы. –
Не забудьте присоединяться! Индексированные поля соединения ускоряют работу. – JustJohn