我是使用 Mysql 的新手,在尝试读取数据库的大型表时遇到问题。我创建了下一个数据库:
CREATE DATABASE `chamber_master_db` /*!40100 DEFAULT CHARACTER SET utf8 */
有80个表如下:
CREATE TABLE `chamber_el_801_server_tb` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Chamber_id` varchar(20) NOT NULL DEFAULT 'NA',
`Date` date NOT NULL,
`Time` varchar(20) NOT NULL DEFAULT 'NA',
`Status` varchar(20) NOT NULL DEFAULT 'NA',
`EWR` varchar(20) NOT NULL DEFAULT 'NA',
`Program` varchar(30) NOT NULL DEFAULT 'NA',
`TestLeg` varchar(20) NOT NULL DEFAULT 'NA',
`Test` varchar(20) NOT NULL DEFAULT 'NA',
`Temperature` double NOT NULL DEFAULT '0',
`Humidity` double NOT NULL DEFAULT '0',
`Channel3` double NOT NULL DEFAULT '0',
`Setpoint1` double NOT NULL DEFAULT '0',
`Setpoint2` double NOT NULL DEFAULT '0',
`Setpoint3` double NOT NULL DEFAULT '0',
`ChamberStatus` int(11) NOT NULL DEFAULT '0',
`TestEquipment` varchar(20) NOT NULL DEFAULT 'NA',
`LoadRack` varchar(20) NOT NULL DEFAULT 'NA',
PRIMARY KEY (`id`),
KEY `index2` (`Date`)
) ENGINE=InnoDB AUTO_INCREMENT=44754 DEFAULT CHARSET=utf8
我有两个索引,一个用于“id”,它是记录的顺序条目号,另一个用于日期,因为我将按日期查询表(我放置这些索引是因为我读到使用索引可以加快查询过程)。
数据库的 80 个表每分钟都有一条新记录,因此几周后这些表非常大。
当我在一个表的一段时间内查询一组记录时,数据库响应很快。问题是当我在一段时间内查询数据库中所有表的一组记录时(此查询用于我的 Web 应用程序的统计目的),即使从 mysql workbench 5.2.46 执行查询,其中数据库正在运行。
我还读到数据库使用的引擎可能会影响数据库,但我不确定哪个引擎最适合这个应用程序。
我正在使用的查询是下一个:
commandLine = "SELECT count(*) FROM " + table + " WHERE Status = '" + "Run" + "' AND Date BETWEEN '" + startdate + "' AND '" + enddate + "'";
_mysqlcommand.CommandText = commandLine;
Run= Convert.ToDouble(_mysqlcommand.ExecuteScalar()) / totalrows * 100;
该查询对每个表执行 5 次,以便了解不同状态的行数,然后在一个循环内对数据库中的 80 个表重复此操作,到目前为止,这需要一分钟。
那么问题是,当在同一个例程中查询所有 80 个表时,我可以做些什么来从数据库中获得快速响应。