你定义主键时,需要明确的创建索引,或者是隐含的? 答案是相同的MyISAM和InnoDB?
Answer 1:
主键索引始终。 这对于MyISAM和InnoDB相同,一般是,在所有支持索引所有的存储引擎如此。
Answer 2:
据http://dev.mysql.com/doc/refman/5.0/en/constraint-primary-key.html它会出现,这将是隐式
Answer 3:
即使这个被要求在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 索引 (PRIMARY KEY,UNIQUE,INDEX和FULLTEXT)存储在B树。 例外的是,关于空间数据类型索引使用R-树,并且MEMORY表还支持散列索引。
Answer 4:
主键索引隐含两个MyISAM和InnoDB。 您可以通过使用EXPLAIN的查询,使得使用该主键的验证这一点。
Answer 5:
你不必为一个主键显式地创建一个索引...它在默认情况下完成的。
Answer 6:
我想这就是答案
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)
Answer 7:
索引是对那些经常在where子句中使用的列最佳使用,并且在任何种类的分类,比如“按订单”。 你可能是一个更复杂的数据库上工作,所以这是很好的记住一些简单的规则。
- 指标减缓插入和更新,所以你要对频繁更新的列谨慎使用它们。
索引加快地方by子句和秩序。 请仔细考虑如何使你的数据将构建表时使用。 还有一些其他的事情要记住。 如果你的表是非常小的,也就是说,只有几个员工,这是糟糕的使用索引,而不是离开它,就让它做一个表扫描。
指数其实只派上用场,与有大量行的表。
另一件事要记住,这是我们员工的数据库的情况下一个反面的是,如果该列是可变长度,索引(以及大多数MySQL的)进行更有效。
不要忘记加入呢! 索引连接字段加快速度。
Answer 8:
主键始终是自动索引和独特的。 所以,要小心不要创建冗余索引。
例如,如果你创建了一个表作为这样的
CREATE TABLE mytable (foo INT NOT NULL PRIMARY KEY, bar INT NOT NULL, baz INT NOT NULL,
UNIQUE(foo), INDEX(foo)) ENGINE=InnoDB;
因为你想索引的主键,就可以强制执行的唯一约束,你实际上最终建立在三个指标foo
!