MySQL——在MySQL中查询大表-

MySQL——在MySQL中查询大表-,mysql,performance,join,Mysql,Performance,Join,这显然看起来像是大学专业表的拙劣设计 CREATE TABLE `college_majors` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date_time` datetime DEFAULT NULL, `UNITID` varchar(255) DEFAULT NULL, `CIPCODE` varchar(255) DEFAULT NULL, `AWLEVEL` varchar(255) DEFAULT NULL, `CTO

这显然看起来像是大学专业表的拙劣设计

CREATE TABLE `college_majors` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date_time` datetime DEFAULT NULL,
  `UNITID` varchar(255) DEFAULT NULL,
  `CIPCODE` varchar(255) DEFAULT NULL,
  `AWLEVEL` varchar(255) DEFAULT NULL,
  `CTOTALT` varchar(255) DEFAULT NULL,
  `CTOTALM` varchar(255) DEFAULT NULL,
  `CTOTALW` varchar(255) DEFAULT NULL,
  `CAIANT` varchar(255) DEFAULT NULL,
  `CASIAT` varchar(255) DEFAULT NULL,
  `CBKAAT` varchar(255) DEFAULT NULL,
  `CHISPT` varchar(255) DEFAULT NULL,
  `CNHPIT` varchar(255) DEFAULT NULL,
  `CWHITT` varchar(255) DEFAULT NULL,
  `C2MORT` varchar(255) DEFAULT NULL,
  `CUNKNT` varchar(255) DEFAULT NULL,
  `CNRALT` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=270167 DEFAULT CHARSET=utf8;
我可以将此表缩减为三列—id、CIPCODE和UNITID。但问题是,即使是像“选择”这样的简单查询,也需要花费很长时间才能执行,有时甚至无法执行

我将查询执行时间增加到6000.00秒,但查询仍然无法运行

关于如何改进设计、创建新表以及插入此表中数据的任何建议

谢谢,
A

如果大学专业映射中的“codevalue”字段是唯一的,则可以对其进行索引并提高加入性能。

首先,在WHERE子句中使用左加入没有任何意义。是否有理由使用左加入大学专业映射?这减慢了查询速度。似乎大学本科专业的表设计不正确。我可以将它简化为一个包含id、CIPCODE和UNITID的三列表。然后将数据插入到新表中。但即使是在我对大学专业进行查询时,即使是像select*这样的简单查询,也可以从一个4C大学专业;大约600-800秒的时间太长了。有什么建议吗?表中似乎没有任何有用的联接索引。这些对于除基本查询之外的任何查询都非常重要,可以接受地执行。是的。第1步必须在规范化时阅读。第2步将是索引的正确应用。问题在于主表设计,因为即使是简单的select查询也会失败。MyISAM不是可靠的引擎,所以您是否检查此表的错误?喜欢