mysql - 主键与键索引速度

标签 mysql

我有一个带有 2K 寄存器的 MySql 表 InnoDB引擎。前两个字段是 PRIMARY KEY (AUTO INCREMENT)id和一个 INDEX KEY VARCHAR(255)codreg .

之前我的 table 上只有 PRIMARY KEY (VARCHAR(6))codreg .

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

主键索引比主键索引快吗?

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

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

$_q_aux 是:

SELECT codreg FROM table2 WHERE codreg like '%string%'

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

执行时间太慢..

最佳答案

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

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

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

关于mysql - 主键与键索引速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22197387/

相关文章:

mysql - 未检测到最后一个 ID

php - android使用php连接mysql

php - 如何在 PHP 或 MySQL 中将字符串转换为列表

时间:2019-01-17 标签:c#graphicsdrawstring()listviewtoimage

MySql用户银行账户日志

php - 我应该如何存储音乐文件?

php - 为什么php无法打印mysql数据库的数据?

mysql - MySQL 中无符号 FLOAT 值的范围

java - 这个类设计错了吗?

php - 创建最近查看列表,MySQL 或 Redis