MIN値とMAX値を取得するための本当に簡単なクエリは、次のようになります。
SELECT MAX(value_avg)
, MIN(value_avg)
FROM value_data
WHERE value_id = 769
AND time_id BETWEEN 214000 AND 219760;
そして、これがvalue_dataテーブルのスキーマです。
CREATE TABLE `value_data` (
`value_id` int(11) NOT NULL,
`time_id` bigint(20) NOT NULL,
`value_min` float DEFAULT NULL,
`value_avg` float DEFAULT NULL,
`value_max` float DEFAULT NULL,
KEY `idx_vdata_vid` (`value_id`),
KEY `idx_vdata_tid` (`time_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ご覧のとおり、クエリとテーブルは単純で、ここでは何も問題はありませんが、このクエリを実行すると、データを取得するのに約9秒かかります。このクエリのプロファイルも作成しましたが、99%の時間は「データの送信」です。
テーブルは本当に大きく、重さは約2 GBですが、問題はありますか?このテーブルは大きすぎるとは思いません、何か他のものに違いありません...