11

除了方便的自增和UNIQUE特性,PK真的能加速索引吗?

无论是非 PK 索引INT还是 PK (同一列,两个不同的测试),速度是否相同?如果我在同一个系统的同一张表上有相同的UNIQUE INT列,如果具有索引的列也启用了 PK 会更快吗?PK 是否让与其共存的索引更快?

拜托,如果你能这么好,实际结果只有系统统计数据。

4

2 回答 2

18

表的主键代表您在最重要的查询中使用的列或列集。它有一个关联索引,用于快速查询性能。查询性能受益于NOT NULL 优化,因为它不能包含任何NULL值。使用InnoDB 存储引擎,表数据在物理上进行组织,以根据主键列或列进行超快速查找和排序。

如果您的表很大且很重要,但没有明显的列或列集可用作主键,则您可以创建一个具有自动增量值的单独列以用作主键。当您使用外键连接表时,这些唯一 ID可以用作指向其他表中相应行的指针。

另请参阅以下位置:http ://www.dbasquare.com/2012/04/04/how-important-a-primary-key-can-be-for-mysql-performance/和http://www.w3schools .com/sql/sql_primarykey.asp

于 2013-01-05T19:51:46.297 回答
3

基表中的行由为表定义的主键的值唯一标识。表的主键由一个或多个列的值组成。

主键被自动索引以促进有效的信息检索。

主键索引是对表最有效的访问路径。

可以将其他列或列组合定义为二级索引,以提高数据检索的性能。二级索引是在创建表后定义的(使用 CREATE INDEX 语句)。

二级索引可能有用的一个例子是,当定期对具有许多行的表中的非键列执行搜索时,在列上定义索引可能会加快搜索速度。搜索结果不受索引影响,但搜索速度得到优化。

但是应该注意,索引会为更新、删除和插入操作带来开销,因为索引也必须更新。

索引是内部结构,一旦创建,用户就无法显式访问。如果内部查询优化过程确定索引将提高搜索效率,则将使用索引。

SQL 查询在内部准备好执行时会自动优化。优化过程确定执行每个查询的最有效方式,这可能涉及也可能不涉及使用适用的索引。

于 2013-01-05T19:43:41.973 回答