使用索引与mysql表

smi*_*ith 2 mysql database indexing

我的mysql数据库有一个包含3列的表,

它的结构:

CREATE TABLE `Table` (
    `value1` VARCHAR(50) NOT NULL DEFAULT '',
    `value2` VARCHAR(50) NOT NULL DEFAULT '',
    `value3` TEXT NULL,
    `value4` VARCHAR(50) NULL DEFAULT NULL,
      `value5` VARCHAR(50) NULL DEFAULT NULL,
       PRIMARY KEY (`value1`, `value2`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
ROW_FORMAT=DEFAULT
Run Code Online (Sandbox Code Playgroud)

第一列和第二列是: varchar(50)

它们都结合了第三列的主键 text,

该表包含大约1000000条记录,我使用第一列进行搜索,需要几分钟

搜索特定项目.

我如何索引此表以加快我的搜索速度以及使用哪种索引类型?

sti*_*vlo 5

50 + 50个字符的主键?它包含什么?你应该把桌子放在第3范式吗?听起来钥匙本身可能包含一些信息,听起来像是一个警钟.

如果您可以使用其他更短且易于管理的内容来更改主键,则可以尝试以下几种方法:

  • 将text3外部化到另一个表,由新主键匹配
  • 分析你的表以确定更优化的长度,而不是50个字符 SELECT FROM xcve_info PROCEDURE ANALYSE()
  • 相应地更改字段的大小,如果你能负担额外的空间,可以将VARCHAR改为CHAR
  • 添加一个索引value1,该索引可能不应该是主键的一部分

始终检查更改的性能,看看它们是否值得.