主键是否会加速索引?

时间:2013-01-05 19:41:11

标签: mysql performance indexing benchmarking

除了方便的自动增量和UNIQUE功能外,PK实际上是否会加速索引?

无论是非PKed索引INT还是PKed(同一列,两个不同的测试),速度是否相同?如果我在同一系统上的同一个表上有相同的列,如果带有索引的UNIQUE INT列也启用了PK,它会更快吗? PK是否能使指数更快地共存?

请实际结果只有系统统计数据,如果你可以这么好。

2 个答案:

答案 0 :(得分:12)

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

如果您的表很大且很重要,但没有明显的列或列集用作主键,您可以创建一个单独的列,其中包含自动增量值以用作主键< / strong>即可。当您使用外键连接表时,这些唯一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

答案 1 :(得分:3)

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

自动索引主键以便于有效地检索信息。

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

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

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

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

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

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