主键与键索引速度

时间:2014-03-05 12:11:10

标签: mysql

我有一个带有2K寄存器InnoDB引擎的MySql表。前两个字段为PRIMARY KEY (AUTO INCREMENT),称为idINDEX KEY VARCHAR(255)称为codreg

在我的桌子前面只有一个名为PRIMARY KEY (VARCHAR(6))的{​​{1}}。

问题在于新配置,codreg(类似)的搜索比唯一的codreg配置慢。

主键索引是否比键索引快?

此问题与我必须执行此查询的性能问题有关

codreg

$ _ q_aux是:

SELECT CE.*, GI.* FROM ($_q_aux) CE inner join table2 GI ON GI.codreg=CE.codreg

表1是2k条目,表2是20K条目

执行时间太慢..

1 个答案:

答案 0 :(得分:0)

它们基本上是一回事。但你真正的问题是你使用varchar作为PK - 为什么? 您应该使用一些整数类型,如INT,您将看到真正的性能改进。

如果你确实需要这样的列varchar,那么首先检查你是否知道该字段的确切长度,然后你应该使用char(6)。

另外请记住,当您执行LIKE搜索时如果仅将“%”置于最后位置,则搜索速度会更快,否则他们将扫描每一行。因此,如果您可以使用WHERE codreg,如“123%”,而不是“%123%”