我有一个带有2K寄存器InnoDB
引擎的MySql表。前两个字段为PRIMARY KEY (AUTO INCREMENT)
,称为id
,INDEX 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条目
执行时间太慢..
答案 0 :(得分:0)
它们基本上是一回事。但你真正的问题是你使用varchar作为PK - 为什么? 您应该使用一些整数类型,如INT,您将看到真正的性能改进。
如果你确实需要这样的列varchar,那么首先检查你是否知道该字段的确切长度,然后你应该使用char(6)。
另外请记住,当您执行LIKE搜索时如果仅将“%”置于最后位置,则搜索速度会更快,否则他们将扫描每一行。因此,如果您可以使用WHERE codreg,如“123%”,而不是“%123%”