FIX Transact SQL Top n 句を使用して、SQL Server 2005 でパーティション テーブルでクエリを実行すると、パーティション テーブル、効率の悪いクエリ プラン生成可能性があります。

文書翻訳 文書翻訳
文書番号: 924601
# をバグ: 1253 (SQL 修正プログラム)
Microsoft Microsoft SQL Server 2005年修正プログラム 1 つのダウンロード ファイルとして配布しています。修正プログラムは累積的であるため、各新しいリリースすべての修正プログラムが含まれているし、以前の SQL Server 2005 に含まれていたすべてのセキュリティ修正プログラム リリースを修正します。
すべて展開する | すべて折りたたむ

目次

概要

次のこの修正プログラムについて説明しますリリース:
  • この修正プログラム パッケージで修正される問題
  • この修正プログラムを適用するための必要条件パッケージ
  • 適用後、コンピューターを再起動する必要があるかどうか、修正プログラム パッケージ
  • この修正プログラム パッケージが他の修正プログラムによって置き換えられますかどうかパッケージ
  • かどうかの適用後、レジストリを変更する必要があります、修正プログラム パッケージ
  • この修正プログラムに含まれているファイルパッケージ

現象

Microsoft SQL Server 2005年でパーティション テーブルで Top n 句を使用する Transact SQL クエリを実行すると、パーティション テーブル、効率の悪いクエリ プランが生成されます。計画より効率的な非クラスター化インデックスのシークを実行するのではなく、クラスター化インデックスのスキャンを実行できます。たとえば、次の条件に該当する場合この問題が発生します。
  • に対してクエリを実行します。 tblTest テーブルです。クエリ、次のように可能性があります。
    SELECT top 1 * FROM tblTest WHERE OrderID = 'ABCDXYZ' ORDER BY OrderDateTime DESC
  • は、 tblTest テーブルの分割には、 OrderDateTime 列です。
  • クラスター化インデックスの作成、 OrderDateTime 列です。
  • 非クラスター化インデックスを作成、 [受注コード] 列です。
メモ
  • クラスター化インデックス スキャンは、ORDER BY 句を使用しない場合は実行されます。
  • テーブルとインデックスをパーティション分割しない場合は、非クラスター化インデックスのシーク プランが生成されます。

原因

クエリ オプティマイザーは、インデックスを使用してのコストを overestimates ために発生パーティション テーブルにシークします。

解決方法

修正プログラムの情報

サポートされている修正プログラムがマイクロソフトから入手可能です。ただし、この修正プログラムはこの資料に記載されている問題のみを修正するものです。この修正プログラムはこの問題が発生しているシステムにのみ適用されます。この修正プログラムは、今後さらにテストを受け取ることがあります。したがって、この問題で深刻な影響をされていない場合は、この修正プログラムを含む次のソフトウェア更新プログラムのリリースを待つことをお勧めします。

この修正プログラムがダウンロードできないか場合は、この記事の上部に「修正プログラムのダウンロード」セクションです。このセクションが表示されない場合は、マイクロソフト カスタマー サービス & サポート修正プログラムを入手するに問い合わせてください。

メモ その他の問題が発生した場合、またはトラブルシューティングが必要な場合は、別のサービス リクエストを作成する必要があります。追加の質問およびこの特定の修正プログラムの対象とならない問題については、通常のサポート料金が適用されます。一覧マイクロソフト カスタマー サービス & サポートの電話番号のまたは別のサービス リクエストを作成するには、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support
メモ 「修正プログラムのダウンロード」フォームに修正プログラムが提供されている言語を表示します。お使いの言語が表示されない場合は、修正プログラムがその言語の利用できないためにです。

前提条件

この修正プログラムを適用するには、SQL Server 2005 Service Pack がコンピューターにインストールされている 1 (SP1) する必要があります。 SQL Server 2005 Service Pack 1 の入手方法の詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
913089SQL Server 2005 の最新の service pack を入手する方法

情報を再起動します。

この修正プログラムを適用した後コンピューターを再起動するはありません。

レジストリ情報

レジストリを変更するはありません。

修正プログラムのファイル情報

この修正プログラムにはこの資料に記載されている問題を修正するために必要なファイルのみが含まれています。この修正プログラムは、製品を最新のビルドに更新するために必要なすべてのファイルの含めることはできません。
この修正プログラムの英語版がファイル属性 (またはそれ以降のファイル属性) が、次のとおり。日付および時刻これらのファイルを世界協定時刻 (UTC) が表示されます。ファイル情報を表示すると、ローカル時刻に変換します。UTC とローカル時刻との時差を確認するを使用して、 タイム ゾーン コントロール パネルの日付と時刻の項目に含まれる ◇
SQL Server 2005 は、32 ビット x 86 バージョン
元に戻す全体を表示する
ファイル名ファイルのバージョンファイルのサイズ日付時間プラットフォーム
Logread.exe2005.90.2187.0398,1122006 年 8 月 31 日19: 40x 86
Microsoft.analysisservices.adomdclient.dll9.0.2187.0543,5202006 年 8 月 31 日19: 41x 86
Microsoft.analysisservices.deploymentengine.dll9.0.2187.0138,0162006 年 8 月 31 日19: 38x 86
Microsoft.analysisservices.dll9.0.2187.01,215,2642006 年 8 月 31 日19: 39x 86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2187.075,5522006 年 8 月 31 日19: 37x 86
Microsoft.sqlserver.sqlenum.dll9.0.2187.0908,0642006 年 8 月 31 日19: 39x 86
Msgprox.dll2005.90.2187.0197,9202006 年 8 月 31 日19: 40x 86
Msmdlocal.dll9.0.2187.015,610,1442006 年 8 月 31 日19: 39x 86
Msmdredir.dll9.0.2187.03,990,3042006 年 8 月 31 日19: 40x 86
Replprov.dll2005.90.2187.0547,6162006 年 8 月 31 日19: 41x 86
Replrec.dll2005.90.2187.0782,1122006 年 8 月 31 日19: 39x 86
Sqlaccess.dll2005.90.2187.0347,9362006 年 8 月 31 日19: 40x 86
Sqlagent90.exe2005.90.2187.0319,2642006 年 8 月 31 日19: 39x 86
Sqlservr.exe2005.90.2187.028,961,1122006 年 8 月 31 日19: 39x 86
Xpstar90.dll2005.90.2187.0292,6402006 年 8 月 31 日19: 42x 86
Xpstar90.rll2005.90.2187.0152,8642006 年 8 月 31 日19: 39x 86
SQL Server 2005 を 64 ビット版
元に戻す全体を表示する
ファイル名ファイルのバージョンファイルのサイズ日付時間プラットフォーム
Logread.exe2005.90.2187.0522,5282006 年 9 月 01 日00: 06x64
Microsoft.analysisservices.adomdclient.dll9.0.2187.0543,5202006 年 8 月 31 日19: 41x 86
Microsoft.analysisservices.adomdclient.dll9.0.2187.0543,5202006 年 9 月 01 日00: 02x 86
Microsoft.analysisservices.deploymentengine.dll9.0.2187.0138,0162006 年 8 月 31 日19: 38x 86
Microsoft.analysisservices.dll9.0.2187.01,215,2642006 年 8 月 31 日19: 39x 86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2187.075,5522006 年 8 月 31 日19: 37x 86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2187.091,4242006 年 9 月 01 日00: 03x64
Microsoft.sqlserver.sqlenum.dll9.0.2187.0875,2962006 年 9 月 01 日00: 04x 86
Msgprox.dll2005.90.2187.0259,3602006 年 9 月 01 日00: 05x64
Msmdlocal.dll9.0.2187.015,610,1442006 年 8 月 31 日19: 39x 86
Msmdredir.dll9.0.2187.03,990,3042006 年 8 月 31 日19: 40x 86
Replprov.dll2005.90.2187.0745,2482006 年 9 月 01 日00: 03x64
Replrec.dll2005.90.2187.01,008,4162006 年 9 月 01 日00: 04x64
Sqlaccess.dll2005.90.2187.0355,1042006 年 9 月 01 日00: 06x 86
Sqlagent90.exe2005.90.2187.0390,9442006 年 9 月 01 日00: 06x64
Sqlservr.exe2005.90.2187.039,341,8562006 年 9 月 01 日00: 03x64
Xpstar90.dll2005.90.2187.0540,9602006 年 9 月 01 日00: 06x64
Xpstar90.rll2005.90.2187.0153,3762006 年 9 月 01 日00: 04x64
SQL Server 2005 を Itanium アーキテクチャ バージョン
元に戻す全体を表示する
ファイル名ファイルのバージョンファイルのサイズ日付時間プラットフォーム
Logread.exe2005.90.2187.01,095,4562006 年 8 月 31 日23: 02IA-64
Microsoft.analysisservices.adomdclient.dll9.0.2187.0543,5202006 年 8 月 31 日19: 41x 86
Microsoft.analysisservices.adomdclient.dll9.0.2187.0543,5202006 年 8 月 31 日23: 01x 86
Microsoft.analysisservices.deploymentengine.dll9.0.2187.0138,0162006 年 8 月 31 日19: 38x 86
Microsoft.analysisservices.dll9.0.2187.01,215,2642006 年 8 月 31 日19: 39x 86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2187.075,5522006 年 8 月 31 日19: 37x 86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2187.0163,1042006 年 8 月 31 日23: 00IA-64
Microsoft.sqlserver.sqlenum.dll9.0.2187.0875,2962006 年 8 月 31 日23: 02x 86
Msgprox.dll2005.90.2187.0542,4962006 年 8 月 31 日23: 01IA-64
Msmdlocal.dll9.0.2187.048,587,0402006 年 8 月 31 日23: 01IA-64
Msmdredir.dll9.0.2187.06,237,4722006 年 8 月 31 日23: 02IA-64
Replprov.dll2005.90.2187.01,617,1842006 年 8 月 31 日23: 02IA-64
Replrec.dll2005.90.2187.02,141,4722006 年 8 月 31 日23: 02IA-64
Sqlaccess.dll2005.90.2187.0349,4722006 年 8 月 31 日23: 01IA-64
Sqlagent90.exe2005.90.2187.01,143,5842006 年 8 月 31 日23: 02IA-64
Sqlservr.exe2005.90.2187.072,216,8642006 年 8 月 31 日23: 01IA-64
Xpstar90.dll2005.90.2187.0951,0722006 年 8 月 31 日23: 04IA-64
Xpstar90.rll2005.90.2187.0152,3522006 年 8 月 31 日23: 02IA-64

状況

マイクロソフトでは、この「対象」に記載されているマイクロソフト製品の問題として認識しています。

詳細

「現象」のセクションのクエリをパーティション テーブルを使用するクエリ プラン、次のように可能性があります。
SELECT top 1 * FROM tblTest WHERE ORDERID = 'AE5PL-14' ORDER BY OrderDateTime DESC
|--Top(TOP EXPRESSION:((1)))
|--Nested Loops(Inner Join, OUTER REFERENCES:([PtnIds1004]) PARTITION ID:([PtnIds1004]))
|--Constant Scan(VALUES:(((32)),((31)),((30)),((29)),((28)),((27)),((26)),((25)),((24)),((23)),((22)),((21)),((20)),((19)),((18)),((17)),((16)),
((15)),((14)),((13)),((12)),((11)),((10)),((9)),((8)),((7)),((6)),((5)),((4)),((3)),((2)),((1))))
|--Clustered Index Scan(OBJECT:([part2].[dbo].[tblTest].[IX_tblTest_RT]), WHERE:([part2].[dbo].[tblTest].[OrderID]='AE5PL-14') 
ORDERED BACKWARD 
PARTITION ID:([PtnIds1004]))
分割されていないテーブルを使用するクエリ プランは次のように可能性があります。
SELECT top 1 * FROM tblTest WHERE ORDERID = 'AE5PL-14' ORDER BY OrderDateTime DESC
|--Top(TOP EXPRESSION:((1)))
|--Nested Loops(Inner Join, OUTER REFERENCES:([Uniq1002], [nonpart2].[dbo].[tblTest].[OrderDateTime], [Expr1004]) WITH 
ORDERED PREFETCH)
|--Index Seek(OBJECT:([nonpart2].[dbo].[tblTest].[IX_tblTest]), SEEK:([nonpart2].[dbo].[tblTest].[OrderID]='AE5PL-14') ORDERED 
BACKWARD)
|--Clustered Index Seek(OBJECT:([nonpart2].[dbo].[tblTest].[IX_tblTest_RT]), SEEK:([nonpart2].[dbo].[tblTest].[OrderDateTime]=
[nonpart2].[dbo].[tblTest].[OrderDateTime] AND [Uniq1002]=[Uniq1002]) LOOKUP ORDERED FORWARD)

詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
824684マイクロソフトのソフトウェア更新プログラムの説明に使用される一般的な用語の説明

関連する案件の詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
923849FIX SQL Server 2005 でパーティション テーブルを参照するクエリを実行すると、クエリのパフォーマンスが低下可能性があります。

プロパティ

文書番号: 924601 - 最終更新日: 2011年7月19日 - リビジョン: 3.0
キーワード:?
kbfix kbqfe kbpubtypekc kbexpertiseadvanced kbhotfixserver kbsql2005tsql kbautohotfix kbmt KB924601 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:924601
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com