簡體   English   中英

哪一個是更好的解決方案?

[英]which one is a better solution?

解決方案1:

Dim i As Integer = CInt(_table.Rows(0).Item(3))
Do While i - 2 > 0
                _tableBackLogs.Merge(Global.DataAccess.GetDataTable("SELECT SubjectID,SubjectName,Grade FROM SubjectPI WHERE RegNo='" & CInt(HttpContext.Current.Session("userName")) & "' AND Status='Fail' AND Semester='" & i - 2 & "'"))
                i = i - 2
            Loop

Solutin 2:

 If i = 1 Then
                Global.DataAccess.GetDataTable("SELECT SubjectID,SubjectName,Grade FROM SubjectPI WHERE RegNo='" & CInt(HttpContext.Current.Session("userName")) & "' AND Status='Fail' AND Semester='" & i & "'")
            ElseIf i = 2 Then
                Global.DataAccess.GetDataTable("SELECT SubjectID,SubjectName,Grade FROM SubjectPI WHERE RegNo='" & CInt(HttpContext.Current.Session("userName")) & "' AND Status='Fail' AND Semester='" & i - 2 & "'")
            ElseIf i = 3 Then
                Global.DataAccess.GetDataTable("SELECT SubjectID,SubjectName,Grade FROM SubjectPI WHERE RegNo='" & CInt(HttpContext.Current.Session("userName")) & "' AND Status='Fail' AND Semester='" & i - 2 & "'")
                'On and on....upto i=8
            End If

在性能和執行速度方面哪一個是更好的解決方案?

更新:我將數據存儲到DATATABLE ....然后將其與ListView一起使用。

是否有一些理由不使用“IN”在一個查詢中抓取所有這些學期數字,就像這樣的東西?

Global.DataAccess.GetDataTable("SELECT SubjectID,SubjectName,Grade 
    FROM SubjectPI 
    WHERE RegNo='" & CInt(HttpContext.Current.Session("userName")) & 
           "' AND Status='Fail' 
              AND Semester IN ('8', '6', '4', '2'))");

因為如果你可以使用“IN”,那就行。 “不要重復自己,”是的,你敢打賭。

編寫軟件的一個原則是:不要重復自己(DRY)。 所以解決方案1肯定更好。 否則,您將遇到代碼維護問題。 我懷疑你會在兩種解決方案之間獲得任何可測量的速度差異。

Which one is a better solution in terms of performance and speed of execution??

好吧,拋開關於字符串連接的擔憂,最好的方法是獲得對數據庫的最小調用次數所需的所有數據。

您應該更改代碼以確定需要哪些學期,然后將所有內容放在一個唯一的查詢中。
所以,正如你所說,在你的評論中, (Semester=1 OR Semester=2 OR Semester=3")會更好。

從您的代碼中,我假設semester是一個varchar字段。 這很糟糕,因為如果它是一個數字,你可以使用最小值和最大值編寫更好的查詢。 (如果你可以保證學期是連續的順序。) (Semester >= 1 AND Semester <= 3)

但是,您可以獲得的最佳性能是,在數據表中是否具有正確的索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM