アプリケーションのスモーク テストを実行できるように、SQL Server データベースに基づくデータのサブセットを取得したいと考えています。私の典型的なワークフローは次のとおりですが、X、Y、Z には何億もの行があるため、削除クエリには 1 時間以上かかります。わかりやすくするために、回答に T-SQL コードを使用してください。
各テーブルに対して次のコマンドを実行して、各テーブルをバックアップします。
SELECT * INTO BACKUP_SRC_PATIENT FROM [SRC_PATIENT] -- has PK patient_id SELECT * INTO BACKUP_SRC_X FROM [SRC_X] -- has FK patient_id SELECT * INTO BACKUP_SRC_Y FROM [SRC_Y] -- has FK patient_id SELECT * INTO BACKUP_SRC_Z FROM [SRC_Z] -- has FK patient_id
100 人を除くすべての患者を削除する
DELETE FROM [SRC_PATIENT] WHERE [PATIENT_ID_NONNUM] NOT IN (SELECT top 100 [PATIENT_ID] FROM [SRC_PATIENT] WHERE BLA = 'BLA')
SRC_PATIENT に患者 ID がない SRC_X、SRC_Y、および SRC_Z からデータを削除します。
DELETE FROM [SRC_X] WHERE [PATIENT_ID] NOT IN (SELECT [PATIENT_ID] FROM [SRC_PATIENT]) DELETE FROM [SRC_Y] WHERE [PATIENT_ID] NOT IN (SELECT [PATIENT_ID] FROM [SRC_PATIENT]) DELETE FROM [SRC_Z] WHERE [PATIENT_ID] NOT IN (SELECT [PATIENT_ID] FROM [SRC_PATIENT])