以下のMSSQL2005クエリは非常に遅いです。私は彼らがそれをスピードアップする方法でなければならないように感じますが、どのように不明です。私は内部のジョイントを編集してselect文を使って、何が起こっているのかをより明白にしましたが、速度には何の影響もありません(おそらくExecutionプランは同じです)。興味深いことに、実際にはcountvalue以上のキーワードにはkeywordvaluegroupsを使用していませんが、これを利用する方法があるかどうかはわかりません。SQL最適化クエリ
select top 1 cde.processPath as 'keywordValue', count(*) as 'total'
from dbo.ClientDefinitionEntry AS cde INNER JOIN dbo.KeywordValueGroups AS kvg
ON cde.keywordGroupId = kvg.keywordValueGrpId
where kvg.[name] = @definitionName
group by cde.processPath
order by total desc
編集:明らかに、人々は私のサブクエリの使用について不平を言っています。実際、それは違いはありません。私はこの質問を投稿する前にそれらを追加して、何が起こっているのかをより簡単に見られるようにしました。しかし、彼らは物事をもっと混乱させただけなので、私はそれらを使用しないように変更しました。
編集:使用中のインデックス:
ClientDefinitionEntry:
IX_ClientDefinitionEntry |nonclustered located on PRIMARY|clientId, keywordGroupId
KeyWordValueGroups
IX_KeywordValueGroups |nonclustered located on PRIMARY|keywordValueGrpId
IX_KeywordValueGroups_2 |nonclustered located on PRIMARY|version
IX_KeywordValueGroups_Name |nonclustered located on PRIMARY|name
これらのテーブルのデータ例は、おそらく役に立ちます... –
あなたはどのようなインデックスを用意していますか?彼らは最新ですか? –
私はAndomarとFrederikと間違いなく同意するでしょう - 何らかのDBの変更を開始する前にまず基本的な調査を行うか、またはインデックス作成が必要なものについて何らかの前提を設定してください。そうすれば、不適切なソリューションに時間を浪費する可能性は低くなります。 – Xiaofu