MS SQL Server와 비교하여 OracleDataReader 개체에서 데이터를 읽는 중 일부 성능이 저하되었습니다. 그것은 거의 10 배 더 느리며 용인 할 수 없습니다.OracleDataReader의 성능이 좋지 않음
다음은 두 테스트에서 사용되는 일부 샘플 테스트 코드입니다. OracleDataReader에서 데이터를 읽는 가장 최적의 방법은 무엇입니까? 아래에 표시된 것보다 더 좋은 방법이 있습니까?
저는 ODP.Net이 SqlClient와 비교할 수 없다고 믿는 데 어려움을 겪고 있습니다.
업데이트 : 텍스트 필드 가져 오기 문제를 좁혔습니다. 어떤 이유로 ODP.Net은 끔찍한 일입니다. 어떤 아이디어로 그것을 고치는 법?
void ReadData(System.Data.IDataReader dr, int maxRows)
{
ArrayList rows = new ArrayList(maxRows > 0 ? maxRows : 1000);
object[] row;
int rowsRead = 0;
while (dr.Read() && ((maxRows == -1) || (rowsRead++ < maxRows)))
{
row = new object[dr.FieldCount];
dr.GetValues(row);
rows.Add(row);
}
rows.Clear();
}
주 (들) :
-
는
FetchSize 실험을 시도,
쿼리 실행 시간이, 여기에 데이터 만 검색 문제없는 큰 차이가 발생하지 않았다 .
두 데이터베이스의 데이터 구조는 동일합니다.
유사한 결과를 얻은 DataAdapter/DataSet 콤보를 시도했습니다.
명백한 질문은 드려 죄송합니다. 그러나 색인이 생성 된 테이블입니까? –
ODP.Net과 SQL을 비교할 수는 없습니다. 하나는 데이터 제공 업체이고, 다른 하나는 DB 서버/엔진입니다. ODP.NET의 최신 버전을 사용하고 있습니까? –
@Brian 두 데이터베이스의 데이터 구조는 동일합니다. 그리고 쿼리 실행 성능은 문제가 아닙니다. 오직 데이터 검색. @ o.k.w 나는 SQL이 아니라 SqlClient라고 말하고자한다. –