以下は私の長年の経験の要約です: ネットワーク プログラミングには常にデータベースの処理が含まれます。データベースを扱うときは、必ず SQL に触れることがあります。 SQL の実行を高速化する方法: この記事では、いくつかの効果的な方法を紹介します: 方法 1. 同じトランザクションの場合、複雑な SQL よりも複雑な SQL を使用する方が効率的です。ヒープの効率を高めるシンプルな SQL 補完。複数のクエリがある場合は、JOIN を上手に使用してください。
oRs=objDBC.Execute('SELECT * FROM Books') for(; !oRs.Eof; oRs.MoveNext()) { oRs2=objDBC.Execute('SELECT * FROM 著者 WHERE AuthorID='' oRs ('著者ID' ).value ''); Response.write(oRs('Title').value ' ' oRs2('Name') '
'); は次のコードよりも遅くなります: oRs=objDBC.Execute( 'SELECT Books.Title,Authors.Name FROM Books JOIN Authors ON Authors.AuthorID=Books.AuthorID'); for(; !oRs.Eof; oRs.MoveNext()) { Response.write(oRs('タイトル'). value ' ' oRs('Name') '
'); } 方法 2: 更新可能な Recordset の使用を避ける oRs=objDBC.Execute('SELECT * FROM Authors WHERE AuthorID=17',(some flags)); oRs('Name')='Karl Karlsson'; oRs.Update(); は次のコードよりも遅くなります: objDBC.Execute('UPDATE Authors SET Name='Karl Karlsson' WHERE AuthorID=17');データベースを更新するときは、バッチ更新を使用してすべての SQL を 1 つの大きなバッチ SQL にまとめ、一度に実行するようにしてください。これは、データを 1 つずつ更新するよりもはるかに効率的です。これは、トランザクション処理のニーズもより適切に満たします。 (JScript の場合) strSQL = 'SET XACT_ABORT ON
'; strSQL ='トランザクションを開始します
'; strSQL ='INSERT INTO 注文(OrdID,CustID,OrdDat) VALUES('9999', '1234',GETDATE())
'; strSQL ='INSERT INTO OrderRows(OrdID,OrdRow,Item,Qty) VALUES('9999 ','01','G4385',5)
'; strSQL ='INSERT INTO OrderRows(OrdID,OrdRow,Item,Qty) VALUES('9999 ','02','G4726',1)
'; strSQL ='トランザクションをコミット
'; strSQL ='XACT_ABORT をオフにします
'; objDBC.Execute(strSQL); このうち、SET XACT_ABORT OFF ステートメントは、後続のトランザクション処理中にエラーが発生した場合、完了したトランザクションがキャンセルされることを SQL Server に指示します。
方法 4. データベース インデックス 方法 5. 文字列の値のサイズが固定されていない場合は、char を使用するよりも varchar を使用する方が良いです。以前、フィールドが TEXT(255) として定義されているサンプル プログラムを見たことがありますが、その値は多くの場合わずか 20 文字でした。このデータ テーブルには 50,000 のレコードがあり、このデータベースは非常に大きくなり、大規模なデータベースは必ず速度が遅くなります。