Answers:
主键始终被索引。对于MyISAM和InnoDB,这是相同的,并且对于所有完全支持索引的存储引擎通常都是如此。
即使在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表也支持哈希索引。
我想这就是答案
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)
索引最适合在where子句中经常使用的列以及任何类型的排序(例如“ order by”)中使用。您可能正在使用更复杂的数据库,所以最好记住一些简单的规则。
索引可以加快where子句和排序依据。记住要考虑在构建表时如何使用数据。还有一些其他事情要记住。如果您的表很小,即只有几个员工,那么使用索引比将索引留给表只让它进行表扫描要糟。
索引实际上仅在具有很多行的表中派上用场。
要记住的另一件事是,在我们员工数据库的情况下,如果列的长度是可变的,则索引(以及大多数MySQL)的执行效率将大大降低。
别忘了加入!索引连接字段加快了工作速度。
可以将主键列视为具有主键约束的任何其他索引列。
在大多数用例中,我们都需要表中的主键和索引列/列,因为对表的查询可能会根据不是主键的列/列来过滤行,在这种情况下,我们通常会索引那些列/列也一样