SQL を開発すると、ASP の実行が遅くなることがあります。次の方法を使用して実行効率を向上させることができます。
[b]方法 1: 単純な SQL の代わりに複雑な SQL を使用してみる[/b]
同じトランザクションの場合、複数のクエリがある場合は、単純な SQL よりも複雑な SQL の方が効率的に完了できます。JOIN を上手に使用する必要があります。
oRs=oConn.Execute(* 書籍から選択)
ors.Eof ではありませんが
strSQL = Select * FROM Authors Where AuthorID=&oRs(AuthorID) ors2=oConn.Execute(strSQL)
Response.write ors(タイトル)&>>&oRs2(名前)&<br>
ors.MoveNext()
曲がります
次のコードよりも遅くなります。
strSQL=Books.Title,Authors.Name を Books から選択し、Authors.AuthorID=Books.AuthorID で著者を結合します
ors=oConn.Execute(strSQL)
ors.Eof ではありませんが
Response.write ors(タイトル)&>>&oRs(名前)&<br>
ors.MoveNext()
曲がります
[b]方法 2: 更新可能な Recordset の使用を避けるようにする[/b]
oRs=oConn.Execute(著者 ID=17,3,3 の著者から * を選択)
ors(名前)=ダークマン
ors.Update()
次のコードよりも遅くなります。
strSQL = 著者を更新 SET Name='DarkMan' Where AuthorID=17
oConn.strSQL の実行
[b]方法 3: データベースを更新するときにバッチ更新を使用してみてください[/b]
すべての SQL を 1 つの大きなバッチ SQL にまとめて一度に実行すると、データを 1 つずつ更新するよりもはるかに効率的になります。これにより、トランザクション処理のニーズもより適切に満たせるようになります。
strSQL=
strSQL=strSQL&SET XACT_ABORT ON/n;
strSQL=strSQL&BEGINトランザクション/n;
strSQL=strSQL&INSERT 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&コミットトランザクション/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 マネージャーで、対応するテーブルを選択し、テーブルを設計し、右クリックして [プロパティ] を選択し、インデックス/キーを選択します。
[b]方法 5: テキスト フィールドを大きくしすぎないようにする[/b]
文字列の値のサイズが固定されていない場合は、char を使用するよりも varchar を使用する方が適切です。以前、フィールドが TEXT(255) として定義されているサンプル プログラムを見たことがありますが、その値は多くの場合わずか 20 文字でした。このデータ テーブルには 50,000 のレコードがあり、このデータベースは非常に大きくなり、大規模なデータベースは必ず速度が遅くなります。