MySQLとクエリは実行の面で非常に高速ですが、何とか私のものは非常に遅いです。大きなテーブルのクエリが非常に遅い
ハードウェア:
- RAM => 8ギガバイト
- デュアルコアプロセッサ
- のWindows Server
- タスクマネージャ:メモリの30%台= 16で
総レコード、 83,410
テーブル構造:
CREATE TABLE `test_result` (
`parameter_id` varchar(45) NOT NULL,
`parameter_value` varchar(5000) DEFAULT NULL,
`test_id` varchar(45) NOT NULL,
`package_id` varchar(45) DEFAULT NULL,
`client_id` varchar(45) NOT NULL,
`added_by` varchar(45) DEFAULT NULL,
`added_on` varchar(45) DEFAULT NULL,
`modify_by` varchar(45) DEFAULT NULL,
`modify_on` varchar(45) DEFAULT NULL,
`test_result_status` varchar(45) DEFAULT NULL,
`analysis_comment` varchar(5000) DEFAULT NULL,
`report_id` varchar(45) NOT NULL,
PRIMARY KEY (`report_id`,`client_id`,`test_id`,`parameter_id`),
KEY `ehr_test_result_index` (`report_id`,`client_id`,`test_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
クエリ:だから
SELECT parameter_id,parameter_value
FROM test_result
WHERE client_id = 14274 and report_id = 266432 and test_id = 21;
、私は、私は、クエリを再実行する場合= 16秒:(
をexeucteにかかる時間を単一のテーブルに対してクエリを実行しています、それはとり4秒、3秒後 (キャッシュが使用されているか、何らかの索引作成のように見えます)
このクエリを最適化するにはどうすればよいですか? parameter_id、client_id、report_id、test_idを数値型に変換する必要がありますか?
返される行の数はいくつですか?クエリとインデックスは大丈夫です。 –
結果をSHOW INDEX FROM test_resultおよびEXPLAIN SELECTのテキストとして送信してください。 –
この表は、VARCHAR以外のMySQLデータ型*その他*を認識していない人が実装したようです。これらの列のいずれかがMySQL整数データ型でサポートされている範囲内の* integer *値を格納している場合は、その列(BIGINT、INT、またはSMALLINT)に整数データ型を使用します。また、add_onおよびmodify_onのようにDATETIMEデータ型を使用できます。 – spencer7593