因此,在我們公司,我們有一個非常大量的文章。 我們有一個自定義的搜索功能來搜索這些文章,這裏是一段代碼,它生成了需要優化的搜索查詢的一部分。比較快的方式查詢
dtModif = dalDocType.FetchByAnyIdentifier(False, "+")
sb.Append("(SELECT (")
For Each row In dtModif.Rows
sb.Append("ISNULL((SELECT -SUM(amount) ")
sb.Append("FROM Sales." & row("TableName") & "Detail ")
sb.Append("WHERE ArticleID = articles.Article.ArticleId ")
sb.Append("AND DATEADD(Year,-1,GETDATE()) < Timestamp ")
sb.Append("),0) ")
sb.Append("+ ")
Next
dtModif = dalDocType.FetchByAnyIdentifier(False, "-")
For Each row In dtModif.Rows
sb.Append("ISNULL((SELECT +SUM(amount) ")
sb.Append("FROM Sales." & row("TableName") & "Detail ")
sb.Append("WHERE ArticleID = articles.Article.ArticleId ")
sb.Append("AND DATEADD(Year,-1,GETDATE()) < Timestamp ")
sb.Append("),0)")
sb.Append("+ ")
Next
sb = sb.Remove(sb.Length - 2, 2)
sb.Append("))")
我得到的每一篇文章,其中stockmodifier爲正(那麼多售然後返回),我添加的所有文章,其中stockmodifier爲負的負總和。通過這種方式,我可以獲得文章銷售的次數。 (可以是負面的)。
我現在想知道,有沒有更好的方法來構造這個查詢? 因爲這基本上是對多個SELECTS的SELECT,所以會影響大型數據庫的性能。
在此先感謝。
雖然查詢執行的代碼是在VB.NET這真的是一個VB.NET的問題嗎? – Adrian
修改標籤:) –
我們在這裏討論的表格有多少?看起來這是一個經典的屬性拆分案例 - 您有多個具有相同/相似結構的表格,並且附加部分數據已被編碼到表格名稱中,而不是將實際數據放入(可輕鬆查詢)列中。 –