我是使用Mysql的新手,在嘗試讀取大型數據庫表時出現問題。我已創建的下一個數據的基礎上: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工作臺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個表,這是迄今爲止需要花費1分鐘的時間。
然後問題是,當在同一例程中查詢所有80個表時,我可以做什麼以獲得數據庫的快速響應。
您可能想要將一個索引添加到「狀態」字段,然後再次測量。 – Bjoern