1

移行プロジェクトの一環として、JDEiSeriesDB2データベースからデータをインポートしました。宛先テーブルを作成してデータをインポートするために、SSISパッケージが作成されました。インポートは正常に行われました。

ここで問題が発生します-顧客は、宛先DB(SQL 2008 R2)で作成された主キーを望んでいます。この場合の問題のテーブルは、104列と750万行のデータを持つ1つのテーブルになります。このテーブルに必要なPKは複合であり、7つの列があります。

私たちはこれを検討しています:

BEGIN TRANSACTION
GO
    ALTER TABLE [dbo].[F0911] ADD  CONSTRAINT [F0911_PK] PRIMARY KEY CLUSTERED 
    (
        [GLDCT] ASC,
        [GLDOC] ASC,
        [GLKCO] ASC,
        [GLDGJ] ASC,
        [GLJELN] ASC,
        [GLLT] ASC,
        [GLEXTL] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    GO
COMMIT

またはこれ:

-- Rename existing tables
        sp_RENAME '[F0911]' , '[F0911_old]'
        GO

    -- Create new table
        SELECT * INTO F0911 FROM F0911_old WHERE 1=0
        GO

    --Create PK constraints
        ALTER TABLE [dbo].[F0911] ADD  CONSTRAINT [F0911_PK] PRIMARY KEY CLUSTERED 
        (
            [GLDCT] ASC,
            [GLDOC] ASC,
            [GLKCO] ASC,
            [GLDGJ] ASC,
            [GLJELN] ASC,
            [GLLT] ASC,
            [GLEXTL] ASC
        )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
        GO

    --Insert data into new tables
        INSERT INTO F0911
        SELECT * FROM F0911_old
        GO

    -- Drop old tables
        DROP TABLE F0911_old
        GO

パフォーマンスの観点から、どちらがより効率的なアプローチでしょうか?私は両方とも同じであり、最初のアプローチでさえ、暗黙のうちに2番目のアプローチと同じことをするという直感を持っています。この理解は正しいですか?

これらの列はすべてテーブルにすでに存在しており、テーブル定義を変更できないことに注意してください。

ありがとう、ラジ

4

2 に答える 2

0

それらは同じです。クラスタ化されたインデックスを作成する効果は、両方の場合に発生するページを配置することです。非クラスター化インデックスの場合は、インデックスを無効にしてからオンに戻し、再構築すると便利です。

于 2012-11-15T09:25:37.150 に答える
0

最初のアプローチは正しいと思いますが、BEGINトランザクションとENDトランザクションの理由がわかりません。テーブルのデータを変更していないので、Transactionキーワードは必要ないと思います。トランザクションは、データをロックする必要があり、古いデータが使用されないようにリアルタイムデータを変更する場合に使用されます。

于 2012-11-15T09:31:25.823 に答える