Emi*_*l H 284
主键始终是索引的.对于MyISAM和InnoDB来说,这是相同的,对于所有支持索引的存储引擎来说通常都是如此.
fyr*_*rye 15
即使在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表也支持哈希索引.
小智 7
我想这就是答案
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)
Run Code Online (Sandbox Code Playgroud)
主键始终自动索引并且是唯一的。因此,请注意不要创建冗余索引。
例如,如果您创建了一个这样的表
CREATE TABLE mytable (foo INT NOT NULL PRIMARY KEY, bar INT NOT NULL, baz INT NOT NULL,
UNIQUE(foo), INDEX(foo)) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)
因为您想要对主键建立索引并对其强制执行唯一性约束,所以您实际上最终会在foo!
小智 6
索引最适合在where子句中经常使用的列以及任何类型的排序(例如“ order by”)中使用。您可能正在使用一个更复杂的数据库,因此最好记住一些简单的规则。
索引可加速where子句和order by。记住要考虑如何在构建表时使用数据。还有一些其他事情要记住。如果您的表很小,即只有几个员工,那么使用索引比将索引留给表并让它进行表扫描要糟得多。
索引实际上仅在具有很多行的表中派上用场。
要记住的另一件事是雇员数据库的情况,即如果该列的长度可变,则索引(以及大多数MySQL)的执行效率将大大降低。
别忘了加入!索引连接字段加快了工作速度。
| 归档时间: |
|
| 查看次数: |
81753 次 |
| 最近记录: |