약 2200 만 개의 레코드가있는 sqlite 데이터베이스가 있습니다. 나는 "sqlitestudio (sqlite 편집기)를 사용하여 약 80 000 행을 반환하는 쿼리를 수행 할 때 쿼리 실행 초 주위에 걸립니다. 그러나 이것이 어떤 형태의 페이지 매김 때문인 것으로 의심됩니다.데이터 액세스 속도를 높이려면 어떻게해야합니까?
그러나 .. C#에서 system.sqlite.data를 사용하여 동일한 쿼리를 실행하면 해당 80,000 개의 레코드를 반복하는 데 시간이 오래 걸릴 수 있습니다.
속도를 향상시킬 방법이 있습니까? 아마도 sqlite.dll 자체에 래퍼를 작성해야합니까?
sqlitestudio와 C# 코드에서 실행 계획과 그 실행 계획을 확인했습니다. Similar issue
동안은 ... 답변 부탁드립니다과 통찰력 (때로는 답) I (즉, 사람이 실제로 작동하는 것을 알)을 Heres
코드를 구체적인 답변을 부탁드립니다을 제공 할 수 있습니다 짐작
using (var command = new SQLiteCommand(conn))
{
command.CommandText = "select cell, lat, lon from cell_towers where mcc = @mcc and net = @net ";
command.Parameters.AddWithValue("@mcc", MCC);
command.Parameters.AddWithValue("@net", MNC);
using (SQLiteDataReader rdr = command.ExecuteReader())
{
// In here it takes around 1-2 minutes to loop through. Even with no code inside the loop
while (rdr.Read())
{
}
}
}
편집 1 : 나는 sqlite3.exe를 사용하여 동일한 쿼리를 실행 한
은 (명령 줄 프로그램이 하나 sqlite.org에서 다운로드 할 수 있음) 그 출력은 콘솔 창으로 간다. 모든 레코드를 반복하여 명령 창에 인쇄하는 데 오랜 시간이 걸리지 만 ... 명령 창에 인쇄하는 것을 기억하십시오 ...
아무 생각없이, 나 wasnt -하지만 .. 루프 당 1 ~ 2 분 걸리는가? 엄청나게 느린 것처럼 보입니다. 루프에서 수행하는 작업을 숨긴 것처럼 독자가 데이터를 가져 와서 원시 객체를 로컬 디스크에 씁니다. 그것을 밖으로 낙관한다, 그것은 아직도 오랫동안 가지고 간다? – BugFinder
루프에서 NOTHING을 사용하더라도 전체 결과 집합이 반복되는 데 걸리는 시간입니다. 그게 날 미치게하는 부분이야. 그러나 (열에서 클래스 속성을 간단하게 할당 한) 코드를 사용하더라도 여전히 오래 걸립니다. 결과 열의 색인이 도움이 될 것이라고 생각하십니까? – Eminem
내 코드 주석 – Eminem