하나의 테이블에서 아주 간단한 쿼리 (세 개는 조건, 두 개는 같음)가 있고 MySQL 쿼리 브라우저에서는 쿼리가 실행되는 데 0.5 초도 채 걸리지 않아 8300 개의 레코드가 반환됩니다. 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 시간이 내 응용 프로그램에서 사용되는 것으로 나타났습니다. 20 (초) 동안 MySQL을 실행하는 VirtualPC 상자 (CentOS)는 0 % 였으므로 문제는 모두 클라이언트 측에서 발생합니다. 또한 쿼리에 대한 설명을 실행하여 다음과 같이 표시했습니다.
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 문제로 드러났습니다. AllCells에 AutoSizeRowsMode를 설정했기 때문에 DataGridView에서 행의 각 셀의 크기를 조정해야했기 때문에로드하는 데 훨씬 오래 걸렸습니다. 이제는 4 초가되었습니다. 이것은 훨씬 합리적인 것입니다. –