0

私は3つのテーブルを持っています:

  1. ImportBatch
  2. PatientChartImages
  3. PatientChartBatchMapping(このテーブルには、ImportBatchとPatientChartImagesの両方に対する外部キーがあります)

3つのテーブルからレコードを選択して定義されたインデックスなしのビューがあります。次のコマンドを使用して、PatientChartImagesテーブルを明示的にロックし、本番データベースのブロッキングシーンリオを生成しています

begin transaction
update PatientChartImages set imagesequence=imagesequence
--Commit transaction

上記のクエリはPatientChartImagesテーブルをロックします。また、次のクエリはタイムアウトします:

select * from ImportBatch where importbatchid=@importbatchid

ビューをドロップして同じプロセスに従うと、ImportBatchクエリがタイムアウトしません。誰かがこの行動を説明できますか?これは設計によるものですか、それとも私は何かおかしなことをしていますか?

4

1 に答える 1

0

ビューだけでは、このような動作は発生しません。しかし、インデックス付きのビューは間違いなくそうなります。または、imagesequenceに外部キー制約が存在する場合は、それを制約します。

于 2012-05-23T18:45:30.297 に答える