単一のテーブルから非常に単純なクエリ(3つの条件は2つあり、そのうち1つは1つです)があります.MySQLクエリブラウザでは、実行には0.5秒もかかりません。 MySQLデータコネクタ(実際にはOLEDBラッパー)を使用して同じクエリを実行すると、約35秒かかります。MySQLデータコネクタがMySQL Query Browserよりもずっと時間がかかるのはなぜですか?
使用されているエンジンはMyISAMです(重要な場合)。私はVisual Studio 2008を使用しています(それは重要です)。編集:MySQLデータコネクタ5.2.5を使用します。編集、編集:MySQLデータコネクタ6.0.3(最新)に切り替えると、29秒に短縮されました。
クエリは次のとおりです。
select drh_data.reading_time, drh_data.raw_value, drh_data.float_value, drh_data.data_quality
from drh_data
where drh_data.site_id=202
and drh_data.device_id=7
and reading_time between '2009-04-08 11:15:01' and '2009-05-08 11:15:02'
order by drh_data.reading_time desc;
任意のアイデア?
アップデート:最終的に(回答者の示唆したように)CPU使用率をチェックしたところ、アプリケーションで50%のCPU時間が使用されていました。 (CentOSの)MySQLを実行しているVirtualPCボックスは、20秒間に0%だったので、問題はすべてクライアント側にあります。私はまたクエリーについてExplainを実行しました。これは次のものに戻ってきました:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE drh_data range PRIMARY,idx_site_device_reading_receive idx_site_device_reading_receive 11 7674 Using where
私はここでタップしました。誰もがこれを解決するためのアイデアを持っていますか?私はLIMIT経由で選択肢を分割するつもりですが、私はそれを行う必要があるとは思わない。
ああ、素敵。これは、MySQLクエリの問題ではなく、DataGridViewの問題であることが判明しました。私はAutoSizeRowsModeをAllCellに設定していたので、DataGridViewは各セルの行のサイズを毎回変更する必要があったため、ロードに時間がかかりました。これは4秒に短縮されました。これははるかに合理的です。 –