私は3,000万件を超えるエントリ(喜び!)だったレギュラーでクエリしているSql-Server-2008データベースを持っています。残念ながら、このデータベースはまだR/Dで使用されているため大幅に変更することはできません。SQLクエリが遅く、日付別にテーブルを注文しますか?
このデータベースからクエリを実行すると、それには時間がかかります。これで私は結果を待つのに十分なほどの辛抱強さがなかったことを意味します(2分後にR/D部門のロックを避けるために取り消す必要があります)。短い日付範囲(数ヶ月以上)を使用しても、基本的に結果を得ることは不可能です。私は4つの列からの要件を照会しています。残念ながら、別の表のインナー結合を使用する必要があります(これは問合せの効率の面で非常にコストがかかると言われていますが、避けられません)。この内部結合テーブルのエントリ数は100,000未満です。
私が疑問に思っていたのは、検索しなければならない結果の数を減らすために、デフォルトで日付順に並べ替えることは可能ですか?
これができない場合は、クエリ時間を短縮するためにできることはありますか?解決策を考え出すのに役立つ有益な情報はありますか?
私が使用したクエリのサンプルが含まれている:
SELECT DISTINCT N.TestName
FROM [DalsaTE].[dbo].[ResultsUut] U
INNER JOIN [DalsaTE].[dbo].[ResultsNumeric] N
ON N.ModeDescription = 'Mode 8: Low Gain - Green-Blue'
AND N.ResultsUutId = U.ResultsUutId
WHERE U.DeviceName = 'BO-32-3HK60-00-R'
AND U.StartDateTime > '2011-11-25 01:10:10.001'
ORDER BY N.TestName
すべてのヘルプや提案が高く評価されています!
説明プランが必要です。または、少なくともどのフィールドがインデックスに登録されているかをお知らせください。 –
注文しているフィールドには、TestNameを含むインデックスなどがありますか? – msarchet