こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Sqlserver2008への移行 効率問題

現在、SQLServer2000を使って社内システムを構築しています。

サーバーのハード保守切れに伴い、
SQLServer2008へ移行しようとしています。

移行前の環境は、
OS WindowsServer2000
DB SQLSERVER2000

移行後の環境は、
OS WindowsServer2008R2 Standard (64bit)
DB SQLSERVER2008R2 (64bit)

となります。

移行後、SQLジョブの処理速度が大幅に遅くなることを起きました。
SqlServer2000の頃は、1分程度掛かってSQLジョブを行っていましたが、
SqlServer2008で21時間以上かかり、効率が大幅に遅くなってしてしまいます。

下記のSQL文を実行してみると、インデックスが違うことを分かりました。

SELECT
i.name AS index_name
,o.name AS table_name
,col.name AS column_name
,i.statblob
FROM
sysindexkeys ik
,sysobjects o
,syscolumns col
,sysindexes i
WHERE
ik.id = o.id
AND ik.id = col.id
AND ik.colid = col.colid
AND ik.id = i.id
AND ik.indid = i.indid
AND o.xtype = 'U'
ORDER BY
i.name
,ik.id
,ik.indid
,ik.keyno

違う箇所は、SqlServer2000で「_WA_Sys_」というインデックスがあって、
SqlServer2008上にありません。
(「_WA_Sys_」を除けば、他のインデックスは全く同じです)

上記インデックスの差異は、効率と関係がありますでしょうか。
あれば、どうすればいいでしょうか。
なければ、他の解決案を頂ければ助かります。

ご教授のほど、よろしくお願いいたします。

投稿日時 - 2011-12-16 12:13:34

QNo.7192813

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.3

今すぐ確認できませんが、調べてみます。
ただ、その遅いジョブはどんなSQLでどんなデータ状況で実行計画はどうなっているのでしょうか?
2000の時と同じ実行計画になっていますか?

そのあたりを提示いただければ他からも解決の糸口が見つかるかもしれません。

投稿日時 - 2011-12-16 17:28:12

お礼

ご返信ありがとうございました。

ジョブは、普通の集計SQLです。(3テーブルからデータを抽出する)
データ状況と実行計画は、2000の時と同じです。

3テーブルのデータ件数は、
テーブルA:37万件
テーブルB:37万件
テーブルA:18万件
となっています。

※このジョブだけ遅くなるではありません、他のジョブも2000より遅くなってしまいました。

投稿日時 - 2011-12-19 14:51:32

ANo.2

私のパソコン上では、すぐにレスポンスが帰って来るので、原因が特定できません、すみません。
テスト環境WindosVistaUltimate(32ビット)+SQL Server2008R2ExpressEditin。
一応確認ですが、どのデータベース上でも同じでしょうか、たとえばmosterデータベース上では。

投稿日時 - 2011-12-16 16:08:00

ANo.1

テーブル名が古い仕様の物のようですが、新しい仕様のテーブル名でトライしてみてはどうでしょうか。
sysindexkeys-->sys.index_columns
sysobjects-->sys.objects
syscolumns-->sys.columns
sysindexes-->sys.indexes

投稿日時 - 2011-12-16 14:56:22

お礼

ご解答を頂きまして、ありがとうございました。

新しい仕様のテーブル名を適用しても、2008の結果は変わりません。

他の意見を頂けませんか。

宜しくお願いいたします。

投稿日時 - 2011-12-16 15:09:20

-広告-
-広告-
-広告-
-広告-