(Visual Studio Magazine)
5 Surefire ADO.NET Performance Tips
http://www.ftponline.com/vsm/2006_03/magazine/columns/databasedesign/

以下、ざっくり内容

Fast to Code != Fast Code
までは前フリなので読まなくていいです。

● DbCommandBuilder オブジェクトを使って、UPDATEするとき、コマンドテキストに以下ようなコードが自動的に、CommandTextに書かれるが、こいつが効率が悪い

CommandText: "UPDATE EMP SET EMPNO = ?,
   ENAME = ?, JOB = ?, MGR = ?, HIREDATE = ?,
   SAL = ?, COMM = ?, DEPT = ? WHERE ( (EMPNO
   = ?) AND (ENAME = ?) AND (JOB = ?) AND
   ((MGR IS NULL AND ? IS NULL) OR (MGR = ?))
   AND (HIREDATE = ?) AND (SAL = ?) AND
   ((COMM IS NULL AND ? IS NULL) OR (COMM =
   ?)) AND (DEPT = ?) )"

こっちにかきなおしたほうが効率がいいぜ。

UPDATE EMP SET EMPNO = ?, ENAME = ?, JOB = ?,
   MGR = ?, HIREDATE = ?, SAL = ?, COMM = ?,
   DEPT = ? WHERE EMPNO = ?

● DbCommandBuilder オブジェクトの欠点その2
 実行時にステートメントを生成
 DataAdapter.Update メソッドが呼ばれるたびに、 DbCommandBuilder は結果セットの中身を分析して UPDATE, INSERT,  DELETE ステートメントを生成
 あらかじめ指定することで、無駄な時間をCUTできる

(2ぺーじ目からは会員のみ読めます(無料で登録できますが))

● 長いデータを検索するのを避ける

● commitの扱い方
 トランザクションをコミットすることは、ディスクI/O, ネットワークI/Oのため遅い
  Autocommit に注意(DBの種類によってはたいへんなことに・・)


● 適切に DbCommand.Prepare () を使いなさい