SQL을 개발하다 보면 ASP 실행이 느려지는 경우가 종종 있습니다. 실행 효율성을 높이기 위해 다음과 같은 방법을 사용할 수 있습니다.
[b]방법 1: 단순한 SQL 대신 복잡한 SQL을 사용해 보세요[/b]
동일한 트랜잭션에 대해 복잡한 SQL은 여러 개의 쿼리가 있을 때 JOIN을 잘 사용해야 합니다.
oRs=oConn.Execute(* FROM Books 선택)
ors.Eof가 아닌 동안
strSQL = 선택 * FROM Authors Where AuthorID=&oRs(AuthorID) ors2=oConn.Execute(strSQL)
Response.write ors(제목)&>>&oRs2(이름)&<br>
ors.이동다음()
향하게 하다
다음 코드보다 느립니다.
strSQL=도서에서 Books.Title,Authors.Name을 선택하세요. 저자 가입 ON Authors.AuthorID=Books.AuthorID
ors=oConn.Execute(strSQL)
ors.Eof가 아닌 동안
Response.write ors(제목)&>>&oRs(이름)&<br>
ors.이동다음()
향하게 하다
[b]방법 2: 업데이트 가능한 레코드 집합을 사용하지 마세요.[/b]
oRs=oConn.Execute(AuthorID=17,3,3인 경우 * FROM Authors 선택)
ors(이름)=다크맨
ors.업데이트()
다음 코드보다 느립니다.
strSQL = 작성자 업데이트 SET Name='DarkMan' 여기서 AuthorID=17
oConn.strSQL 실행
[b]방법 3: 데이터베이스를 업데이트할 때 일괄 업데이트를 사용해 보세요.[/b]
모든 SQL을 하나의 대규모 배치 SQL로 구성하고 한 번에 실행하는 것이 데이터를 하나씩 업데이트하는 것보다 훨씬 효율적입니다. 이는 또한 거래 처리 요구 사항을 더 잘 충족할 것입니다.
strSQL=
strSQL=strSQL&SET XACT_ABORT ON/n;
strSQL=strSQL&BEGIN TRANSACTION/n;
strSQL=strSQL&INTO 주문 삽입(OrdID,CustID,OrdDat) VALUES('9999','1234',GETDATE())/n;
strSQL=strSQL&Insert INTO orderRows(OrdID,OrdRow,Item,Qty) VALUES('9999','01','G4385',5)/n;
strSQL=strSQL&Insert INTO orderRows(OrdID,OrdRow,Item,Qty) VALUES('9999','02','G4726',1)/n;
strSQL=strSQL&COMMIT TRANSACTION/n;
strSQL=strSQL&SET XACT_ABORT OFF/n;
oConn.Execute(strSQL);
그 중 SET XACT_ABORT OFF 문은 SQL Server에게 다음 트랜잭션 처리 중에 오류가 발생하면 완료된 트랜잭션이 취소됨을 알려줍니다.
[b]방법 4, 데이터베이스 인덱스[/b]
Where 절에 표시될 필드의 경우 먼저 인덱싱을 고려해야 하며 정렬해야 하는 필드도 고려해야 합니다.
MS Access에서 인덱스를 생성하는 방법: Access에서 인덱싱해야 하는 테이블을 선택하고 디자인을 클릭한 후 해당 필드의 인덱스를 설정합니다.
MS SQL Server에서 인덱스를 생성하는 방법: SQL Server Manager에서 해당 테이블을 선택한 후 테이블을 디자인하고 마우스 오른쪽 버튼을 클릭한 후 속성을 선택하고 인덱스/키를 선택합니다.
[b]방법 5: 텍스트 필드를 너무 크게 만들지 마세요[/b]
문자열의 값 크기가 고정되어 있지 않은 경우 char을 사용하는 것보다 varchar를 사용하는 것이 좋습니다. 필드가 TEXT(255)로 정의된 예제 프로그램을 본 적이 있지만 그 값은 종종 20자에 불과했습니다. 이 데이터 테이블에는 50,000개의 레코드가 있으므로 이 데이터베이스는 매우 크고 대규모 데이터베이스는 속도가 느려질 수 있습니다.