내 질문에 대한 답변 : Is it normal that sqlite.fetchall() is so slow? fetch-all 및 fetch-one sqlite 매우 느려질 수 있습니다.sqlite 쿼리를 실행 한 후 결과를 가져 오는 속도를 높이려면 어떻게해야합니까?
이time0 = time.time()
self.cursor.execute("SELECT spectrum_id, feature_table_id "+
"FROM spectrum AS s "+
"INNER JOIN feature AS f "+
"ON f.msrun_msrun_id = s.msrun_msrun_id "+
"INNER JOIN (SELECT feature_feature_table_id, min(rt) AS rtMin, max(rt) AS rtMax, min(mz) AS mzMin, max(mz) as mzMax "+
"FROM convexhull GROUP BY feature_feature_table_id) AS t "+
"ON t.feature_feature_table_id = f.feature_table_id "+
"WHERE s.msrun_msrun_id = ? "+
"AND s.scan_start_time >= t.rtMin "+
"AND s.scan_start_time <= t.rtMax "+
"AND base_peak_mz >= t.mzMin "+
"AND base_peak_mz <= t.mzMax", spectrumFeature_InputValues)
print 'query took:',time.time()-time0,'seconds'
time0 = time.time()
spectrumAndFeature_ids = self.cursor.fetchall()
print time.time()-time0,'seconds since to fetchall'
SELECT 문의 실행이 약 50 초 (허용)한다 : 내가 거기에 언급 한 바와 같이
, 나는 다음과 같은 쿼리를 가지고있다. 그러나 fetchall()은 788 초 걸리며 981 개의 결과 만 가져옵니다.
fetchmany()를 사용하여 Is it normal that sqlite.fetchall() is so slow?을 사용하여 내 질문에 대한 응답으로 제공된 쿼리의 속도를 높이는 방법으로 결과를 가져 오는 속도가 향상되지 않았습니다.
sqlite 쿼리를 실행 한 후 결과를 가져 오는 속도를 어떻게 높일 수 있습니까?
내가 명령 줄에서 그것을 실행하려고 정확하게는 SQL :
sqlite> SELECT spectrum_id, feature_table_id
...> FROM spectrum AS s
...> INNER JOIN feature AS f
...> ON f.msrun_msrun_id = s.msrun_msrun_id
...> INNER JOIN (SELECT feature_feature_table_id, min(rt) AS rtMin, max(rt) AS rtMax, min(mz) AS mzMin, max(mz) as mzMax
...> FROM convexhull GROUP BY feature_feature_table_id) AS t
...> ON t.feature_feature_table_id = f.feature_table_id
...> WHERE s.msrun_msrun_id = 1
...> AND s.scan_start_time >= t.rtMin
...> AND s.scan_start_time <= t.rtMax
...> AND base_peak_mz >= t.mzMin
...> AND base_peak_mz <= t.mzMax;
갱신 :
그래서 나는 약 45 분 전에 명령 줄에서 쿼리를 실행하기 시작, 여전히 바쁘기 때문에 명령 줄을 사용하면 속도가 매우 느립니다.
클라이언트를 통해 실행할 때 같은 쿼리 시간이 얼마나 걸립니까? –
또한, 어떤 sqlite3 파이썬 모듈을 사용하고 있습니까? 어떤 버전입니까? 모듈에서 사용하는 sqlite3 버전은 무엇입니까? –
sqlite 모듈을 사용하고 있습니다 : 2.6.3 및 sqlite 버전 : 3.7.10. SQLite 관리자를 통해 명령을 실행하려고하지만 그것을 처리 할 수없는 것 같습니다. –