削除データが多いので、実行時間がかかり場合の解決方法

本文介绍了一种通过创建临时表和分割删除操作来优化大型数据库表中数据删除过程的方法,显著提高了处理效率。

現象:

  DELETE FROM XHIKI WHERE (PORDER + SPACE(4-LEN(CONVERT(VARCHAR,EDA))) + CONVERT(VARCHAR,EDA))

 IN ( SELECT B.PORDER + SPACE(4-LEN(CONVERT(VARCHAR,B.PEDA))) + CONVERT(VARCHAR,B.PEDA) FROM      SEIBAN_TABLE A, XKLOT B WHERE A.SEIBAN = B.SEIBAN AND A.DELETEDATE IS NULL

 

  件数を調べると、「XHIKI」テーブルの総件数が1,572,135件ですが、IN句のカッコ内の個数が32,703件です。そのため、このSQL文

  を実行する時間がかかり、2時間過ぎても終わらない現象が出てしまいました。

 

  原因は以下の二つです。

    ① 削除データが多い

    ② 検索条件が複雑

 

対策:

  新たにストアドプロシージャを作成して、このプロシージャから以上のSQL文の削除処理を行います、以下の通りです。

    ① ワークテーブルの作成

    ② 以上SQL文の検索条件より取得したデータをワークテーブルへ登録

    ③ 検索データの分割

 

実は①、②で実行時間は6分以内、③は時間も短くなっているけど、大きい影響がありません(30秒ぐらいを減らせる)、

特に一時テーブルが十分です。

 

プログラムが以下です。

    

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

 

CREATE PROCEDURE dbo.XhikiTable_Delete
(
@TABLE_NAME VARCHAR(40)
)
AS
BEGIN

DECLARE @START_TIME VARCHAR(20)
DECLARE @END_TIME VARCHAR(20)
DECLARE @COUNT  INTEGER
DECLARE @SQL VARCHAR(200)

CREATE TABLE #TEMP_TABLE
(
PORDER VARCHAR(20)
)

CREATE  INDEX TEMP_TABLE_INDEX ON #TEMP_TABLE(PORDER) 

--BEGIN TRANSACTION

    SET @COUNT = 0
    SET @START_TIME = CONVERT(VARCHAR,GETDATE(),20)
 
 INSERT INTO #TEMP_TABLE(PORDER)
 (SELECT B.PORDER + SPACE(4-LEN(CONVERT(VARCHAR,B.PEDA))) + CONVERT(VARCHAR,B.PEDA) AS PORDER
 FROM SEIBAN_TABLE A, XKLOT B
 WHERE A.SEIBAN = B.SEIBAN AND A.DELETEDATE IS NULL)
 
 SET @COUNT = (SELECT COUNT(*) FROM XHIKI  WHERE (PORDER + SPACE(4-LEN(CONVERT(VARCHAR,EDA))) + CONVERT(VARCHAR,EDA)) IN ( SELECT PORDER FROM #TEMP_TABLE ) )
 
     BEGIN
  DECLARE @i INTEGER
  SET @i = 0

  SET @SQL='DELETE  FROM '+ @TABLE_NAME +' WHERE (PORDER + SPACE(4-LEN(CONVERT(VARCHAR,EDA))) + CONVERT(VARCHAR,EDA)) IN ( SELECT PORDER FROM  #TEMP_TABLE ) '
  
  WHILE(@i < @COUNT/10000+1)
  BEGIN
   SET ROWCOUNT 10000

   EXEC(@SQL)

   SET @i =@i +1
  END
 END
     SET @END_TIME = CONVERT(VARCHAR,GETDATE(),20) 

DROP TABLE #TEMP_TABLE

IF @@ERROR<>0
    BEGIN
--        ROLLBACK TRANSACTION
        PRINT '------------------------------'
        PRINT '-                            -'
        PRINT '- XHIKI  DELETE ABORT END    -'
        PRINT '-                            -'
        PRINT '------------------------------'
        PRINT 'Error encountered, ' + CONVERT(VARCHAR,@@ERROR)
    END
ELSE
    BEGIN
--        COMMIT TRANSACTION
        PRINT '------------------------------'
        PRINT '-                            -'
        PRINT '- XHIKI INSERT DELETE END   -'
        PRINT '-                            -'
        PRINT '------------------------------'
        PRINT ' START TIME         : ' + @START_TIME
        PRINT ' DATA  COUNT       : ' + CONVERT(VARCHAR,@COUNT)
        PRINT ' LOOP  i                 : ' + CONVERT(VARCHAR,@i)
    PRINT ' END   TIME            : ' + @END_TIME
      END
END


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

 

 

 

关键词还是有点少,我发给你你再提取下关键词,無効:フォント色変更、非機能変更と判定されました。 フォント色変更、非機能変更と判定されました。 フォント色変更、非機能変更と判定されました。 フォント色変更、非機能変更と判定されました。 フォント色変更、非機能変更と判定されました。 フォント色変更、非機能変更と判定されました。 車両コード削除されました。非機能変更と判断されました。 "テーブル列名:ALL テーブル列削除は機能変更に該当するため、設計、装、テストなど作業が変更内容に対応するために再調整されることになります。たとえば、テーブル構造を再調整したり、関連するコードやテストケースを更新したりする必要があります。" 取り消し線内容が削除されたことにより、変更前後は全く同じ内容になるため、非機能変更と判断されました。 取り消し線内容が削除されたことにより、変更前後は全く同じ内容になるため、非機能変更と判断されました。 ヘッダーとフッ変更がわれたため、非機能変更と判定されました 書式変更で機能変更ではないと判断されました。 書式変更で機能変更ではないと判断されました。 ヘッダーとフッ変更がわれたため、非機能変更と判定されました フォント色変更で、非機能変更と判断されました。 フォント色変更で、非機能変更と判断されました。 フォント色変更で、非機能変更と判断されました。 フォント色変更で、非機能変更と判断されました。 履歴変更がわれたため、非機能変更と判定されました。 履歴変更がわれたため、非機能変更と判定されました。 履歴変更がわれたため、非機能変更と判定されました。 履歴変更がわれたため、非機能変更と判定されました。 ヘッダーとフッ変更がわれたため、非機能変更と判定されました 仕様書NO.が変更されました、害なし変更であるため非機能変更と判断されました。 書式変更で機能変更ではないと判断されました。 書式変更で機能変更ではないと判断されました。 書式変更で機能変更ではないと判断されました。 書式変更で機能変更ではないと判断されました。 書式変更で機能変更ではないと判断されました。 書式変更で機能変更ではないと判断されました。 仕様書NO.が変更されました、害なし変更であるため非機能変更と判断されました。 際に変更内容がありません。機能変更ではないと判断されました。 言い方変更で、非機能変更と判定されました 仕様書NO.が変更されました、害なし変更であるため非機能変更と判断されました。 際に変更内容がありません。機能変更ではないと判断されました。 フォント色変更、非機能変更と判定されました。 フォント色変更、非機能変更と判定されました。 フォント色変更、非機能変更と判定されました。 該当仕様バージョン記載変更でソフト開発・設計に対応する内容がありません。 フォント色変更、非機能変更と判定されました。 ツール誤検出ため、際に変更内容がありません。非機能変更と判断されました。 ツール誤検出ため、際に変更内容がありません。非機能変更と判断されました。 際に変更内容がありません。機能変更ではないと判断されました。 フォント変更、非機能変更と判定されました。 フォント変更、非機能変更と判定されました。 書式変更で機能変更ではないと判断されました。 フォント変更、非機能変更と判定されました。 フォント変更、非機能変更と判定されました。 フォント変更、非機能変更と判定されました。 フォント変更、非機能変更と判定されました。 フォント変更、非機能変更と判定されました。 書式変更で機能変更ではないと判断されました。 書式変更で機能変更ではないと判断されました。 書式変更で機能変更ではないと判断されました。 書式変更で機能変更ではないと判断されました。 書式変更で機能変更ではないと判断されました。 ヘッダーとフッ変更がわれたため、非機能変更と判定されました ヘッダーとフッ変更がわれたため、非機能変更と判定されました フォント変更、非機能変更と判定されました。 フォント変更、非機能変更と判定されました。 ヘッダーとフッ変更がわれたため、非機能変更と判定されました ヘッダーとフッ変更がわれたため、非機能変更と判定されました フォント変更、非機能変更と判定されました。 フォント変更、非機能変更と判定されました。 フォント変更、非機能変更と判定されました。 ヘッダーとフッ変更がわれたため、非機能変更と判定されました フォント変更、非機能変更と判定されました。 フォント変更、非機能変更と判定されました。 フォント変更、非機能変更と判定されました。 ヘッダーとフッ変更がわれたため、非機能変更と判定されました ヘッダーとフッ変更がわれたため、非機能変更と判定されました ヘッダーとフッ変更がわれたため、非機能変更と判定されました ヘッダーとフッ変更がわれたため、非機能変更と判定されました ヘッダーとフッ変更がわれたため、非機能変更と判定されました ヘッダーとフッ変更がわれたため、非機能変更と判定されました 履歴変更がわれたため、非機能変更と判定されました。 記載例ため、非機能変更と判断されました。 履歴変更がわれたため、非機能変更と判定されました。 ヘッダーとフッ変更がわれたため、非機能変更と判定されました 有意:"テーブル列名:7inch 新しいテーブル列を追加し、新しいデー表示項目を追加するは機能変更です。" "テーブル列名:CONV テーブル列削除は機能変更に該当するため、設計、装、テストなど作業が変更内容に対応するために再調整されることになります。たとえば、テーブル構造を再調整したり、関連するコードやテストケースを更新したりする必要があります。" "テーブル列名:車両仕様【ALL】 新しいテーブル列を追加し、新しいデー項目「ALL」を追加しました。これは機能変更であり、対応する設計、装、テスト作業調整が必要です。" "テーブル列名:車両仕様【密閉ンク (Sealed Tank)】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" "テーブル列名:車両仕様【非密閉ンク (Non-Sealed Tank)】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" "テーブル列名:車両仕様【ALL】 新しいテーブル列を追加し、新しいデー表示項目「ALL」を追加しました。これは機能変更であり、対応するデザイン、装、およびテスト作業調整が必要です。" "テーブル列名:車両仕様【密閉ンク (Sealed Tank)】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" "テーブル列名:車両仕様【非密閉ンク (Non-Sealed Tank)】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" "テーブル列名:車両仕様【 CONV】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" 適用性変更なで、機能変更と判断されます。 "テーブル列名:12inch テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" テーブルに車両仕様【DAVal】【7inch】について要件が変更され、設計、装、テストなど作業で変更内容に対応する必要があることから、機能変更と判断されます。 "テーブル列名:車両仕様【12inch】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" 信号適用性から参考仕様書へ要件が削除され、機能変更と判定されました 信号適用性から参考仕様書へ要件が追加され、機能変更と判定されました 信号適用性から参考仕様書へ要件が削除され、機能変更と判定されました "テーブル列名:メーバリエーション【SndVal】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" 値が変更ため、対応開発が必要なで、機能変更と判断されます。 値変更は機能変更に属し、元値が1で、変更後値が-であるため、値が変化したことから機能変更とみなされます。 値変更は機能変更に属し、元値が3で、変更後値が-であるため、値が変化したで機能変更と言えます。 値変更は機能変更に属します。元20km/hが-に変更され、値が変化したで機能変更です。 値変更は機能変更に属し、テーブル内プロパティ「給油判定量(L)」値が15から5に変更されました。値が変化したで、機能変更になります。 値変更は機能変更に属し、元値が2で、変更後値が-であるため、値が変化したで機能変更と言えます。 信号適用性から参考仕様書へ要件が追加され、機能変更と判定されました 信号適用性から参考仕様書へ要件が削除され、機能変更と判定されました 信号適用性から参考仕様書へ要件が追加され、機能変更と判定されました 信号適用性から参考仕様書へ要件が削除され、機能変更と判定されました テーブル内プロパティ「[少量給油判定閾値]」値を「-」から「1」に変更するは、数値変化であり、要件に従って数値変化は機能変化である。 テーブル内「減算開始容量」値を「-」から「0」に変更するは、数値変更であり、要件に従って数値変更は機能変更として扱われる。 数値変更は機能変更に属し、テーブル内プロパティ「補正係数K最小値」値が 0.01 から 0 に変更されました。数値が変化したで、機能変更になります。 数値変更は機能変更に属し、テーブル内プロパティ「補正係数K最大値」値が5から10に変更されました。数値が変化したで、機能変更になります。 適用性が不明確から非適用に変更され、ソフトチームに周知しないといけないので、ここは機能変更と判断されました。 適用性変更なで、機能変更と判断されます。 適用性変更なで、機能変更と判断されます。 適用性変更なで、機能変更と判断されます。 適用性変更で、機能変更と判断されます。 適用性変更で、機能変更と判断されます。 定義値が変更され、ソフト開発チームに影響する変化点ため、機能変更と判断されます。 定義値が変更され、ソフト開発チームに影響する変化点ため、機能変更と判断されます。 ③中国列値が変更されました。これは値変更であるため、機能変更と判断します。 ⑥中国列値が変更されました。これは値変更であるため、機能変更と判断します。 ⑨中国列値が変更されました。これは値変更であるため、機能変更と判断します。 ③中国列値が変更されました。これは値変更であるため、機能変更と判断します。 ⑥中国列値が変更されました。これは値変更であるため、機能変更と判断します。 ⑨中国列値が変更されました。これは値変更であるため、機能変更と判断します。 ③中国列値が変更されました。これは値変更であるため、機能変更と判断します。 ⑥中国列値が変更されました。これは値変更であるため、機能変更と判断します。 ⑨中国列値が変更されました。これは値変更であるため、機能変更と判断します。 ③中国列値が変更されました。これは値変更であるため、機能変更と判断します。 ⑥中国列値が変更されました。これは値変更であるため、機能変更と判断します。 ⑨中国列値が変更されました。これは値変更であるため、機能変更と判断します。 "テーブル列名:車両仕様【ALL】 新しいテーブル列を追加し、新しいデー項目「ALL」を追加しました。これは機能変更であり、対応する設計、装、テスト作業調整が必要です。" "テーブル列名:車両仕様【密閉ンク (Sealed Tank)】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" "テーブル列名:車両仕様【非密閉ンク (Non-Sealed Tank)】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" "テーブル列名:車両仕様【ALL】 新しいテーブル列を追加し、新しいデー表示項目「ALL」を追加しました。これは機能変更であり、対応するデザイン、装、およびテスト作業調整が必要です。" "テーブル列名:車両仕様【密閉ンク (Sealed Tank)】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" "テーブル列名:車両仕様【非密閉ンク (Non-Sealed Tank)】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" "テーブル列名:車両仕様【 CONV】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" 適用性変更なで、機能変更と判断されます。 "テーブル列名:12inch テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" テーブルに車両仕様【DAVal】【7inch】について要件が変更され、設計、装、テストなど作業で変更内容に対応する必要があることから、機能変更と判断されます。 "テーブル列名:車両仕様【12inch】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" 信号適用性から参考仕様書へ要件が削除され、機能変更と判定されました 信号適用性から参考仕様書へ要件が追加され、機能変更と判定されました 信号適用性から参考仕様書へ要件が削除され、機能変更と判定されました "テーブル列名:メーバリエーション【SndVal】 テーブル列削除は機能変更であるため、設計、装、テストなど作業で変更内容に合わせて対応する必要があります。" 値が変更ため、対応開発が必要なで、機能変更と判断されます。 値変更は機能変更に属し、元値が1で、変更後値が-であるため、値が変化したことから機能変更とみなされます。 値変更は機能変更に属し、元値が3で、変更後値が-であるため、値が変化したで機能変更と言えます。 値変更は機能変更に属します。元20km/hが-に変更され、値が変化したで機能変更です。 値変更は機能変更に属し、テーブル内プロパティ「給油判定量(L)」値が15から5に変更されました。値が変化したで、機能変更になります。 値変更は機能変更に属し、元値が2で、変更後値が-であるため、値が変化したで機能変更と言えます。 信号適用性から参考仕様書へ要件が追加され、機能変更と判定されました 信号適用性から参考仕様書へ要件が削除され、機能変更と判定されました 信号適用性から参考仕様書へ要件が追加され、機能変更と判定されました 信号適用性から参考仕様書へ要件が削除され、機能変更と判定されました テーブル内プロパティ「[少量給油判定閾値]」値を「-」から「1」に変更するは、数値変化であり、要件に従って数値変化は機能変化である。 テーブル内「減算開始容量」値を「-」から「0」に変更するは、数値変更であり、要件に従って数値変更は機能変更として扱われる。 数値変更は機能変更に属し、テーブル内プロパティ「補正係数K最小値」値が 0.01 から 0 に変更されました。数値が変化したで、機能変更になります。 数値変更は機能変更に属し、テーブル内プロパティ「補正係数K最大値」値が5から10に変更されました。数値が変化したで、機能変更になります。 有个别可能是错的,但是我需要更的关键词列表,识别填充
11-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值