トップ ページ > VisualBasic 2010(express) > VisualBasic SQLが複雑過ぎる時

VisualBasic SQLが複雑過ぎる時

SQLが複雑で処理が遅い時

考え方:
  1. Oracleの場合、「CREATE GLOBAL TEMPORARY TABLE」で「ON COMMIT DELETE ROWS」オプションを付けた、一時テーブルを作成する
    ※この例では、[集計TEMP]と言う名前とする
  2. ある程度の途中計算結果をこの一時テーブルに入れる
  3. このテーブルから、再度計算を再開することで、SQLも単純になる

	'コネクト用のオブジェクト準備
	Dim conn As New OracleConnection(oradb)
	Dim Trans As OracleTransaction = Nothing

	Try
		conn.Open()

		'トランザクション開始
		Trans = conn.BeginTransaction(IsolationLevel.ReadCommitted)
		Cmd.Transaction = Trans
		
		'SQL発行準備
		Dim Cmd As New OracleCommand("", conn)

		Cmd.CommandText = "実行したいSQL文1"
		Cmd.ExecuteNonQuery()	'SQLの実行
		
		Cmd.CommandText = "実行したいSQL文2"
		Cmd.ExecuteNonQuery()	'SQLの実行
		
		…
		
		'完成した集計TEMPからのデータFill
		Dim adapter As OracleDataAdapter = New OracleDataAdapter("SELECT * FROM 集計TEMP", conn)
		adapter.Fill(DT_集計TEMP)

		'トランザクション終了
		Trans.Commit()

		'使ったオブジェクトをクローズする
		conn.Close()

	Catch ex As OracleException
		MsgBox(ex.Message.ToString, MsgBoxStyle.Critical, "エラー")
		Trans.Rollback()
		conn.Close()
	End Try