即使是最简单的查询,MySql的速度也非常慢

即使是最简单的查询,MySql的速度也非常慢,mysql,performance,Mysql,Performance,我正在尝试将一个包含一百万行的非常简单的数据集加载到MySQL表中 我使用load data INFILE从5-6个不同的文件加载数据,这些文件都包含相同结构中的相同数据,只是时间不同 加载前2个文件后,加载过程开始变得非常缓慢,考虑到文件有多小(每个文件大约有100MB,100k行)。。。加载一个100mb的文件花费了10分钟以上 我认为问题可能出在加载数据的方式和索引上,但我意识到这是MySQL的一个整体问题。。例如,我运行了以下查询: select count(*) from DataTa

我正在尝试将一个包含一百万行的非常简单的数据集加载到MySQL表中

我使用load data INFILE从5-6个不同的文件加载数据,这些文件都包含相同结构中的相同数据,只是时间不同

加载前2个文件后,加载过程开始变得非常缓慢,考虑到文件有多小(每个文件大约有100MB,100k行)。。。加载一个100mb的文件花费了10分钟以上

我认为问题可能出在加载数据的方式和索引上,但我意识到这是MySQL的一个整体问题。。例如,我运行了以下查询:

select count(*) from DataTable;
我花了301秒才返回答案!!!(回答是78万)

我一定是做错了什么。。我检查了innodb缓冲池等变量,但没有任何异常

我意识到我问的是一个非常基本的问题,但找不到任何关于抱怨类似基本问题的帖子

非常感谢你的帮助


请在下面找到我用于创建数据表的代码

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;

-- -----------------------------------------------------
-- Table `mydb`.`addata`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`addata` (
  `idAdData` INT NOT NULL,
  `Field1` VARCHAR(30) NOT NULL,
  `Field2` VARCHAR(30) NULL,
  `Field3` VARCHAR(50) NULL,
  `Field4` VARCHAR(50) NULL,
  `Field5` VARCHAR(50) NULL,
  `Field6` INT NULL,
  `Field8` VARCHAR(50) NULL,
  `Field9` VARCHAR(50) NULL,
  `Field10` VARCHAR(50) NULL,
  `Field11` INT NULL,
  `Field12` VARCHAR(50) NULL,
  `Field13` VARCHAR(50) NULL,
  `Field14` VARCHAR(50) NULL,
  `Field15` VARCHAR(30) NULL,
  `Field16` VARCHAR(30) NULL,
  `Field17` VARCHAR(30) NULL,
  `Field18` VARCHAR(30) NULL,
  `Field19` VARCHAR(30) NULL,
  `Field20` VARCHAR(30) NULL,
  `Field21` VARCHAR(30) NULL,
  `Field22` VARCHAR(300) NULL,
  `Field23` VARCHAR(100) NULL,
  `Field24` INT NULL,
  PRIMARY KEY (`idAdData`, `Field2`))
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

您可以共享用于创建表的DDL吗?COUNT(*)不一定是InnoDB的“最简单查询”——没有索引,您将进行表扫描,这与MyISAM.Thx不同。。。我现在用DDL更新了我的问题