這是SQLSELECT tal.TrustAccountValueFROM TrustAccountLog AS talINNER JOIN TrustAccount ta ON ta.TrustAccountID = tal.TrustAccountIDINNER JOIN Users usr ON usr.UserID = ta.UserIDWHERE usr.UserID = 70402 ANDta.TrustAccountID = 117249 ANDtal.trustaccountlogid = ( SELECT MAX (tal.trustaccountlogid) FROM TrustAccountLog AS tal INNER JOIN TrustAccount ta ON ta.TrustAccountID = tal.TrustAccountID INNER JOIN Users usr ON usr.UserID = ta.UserID WHERE usr.UserID = 70402 AND ta.TrustAccountID = 117249 AND tal.TrustAccountLogDate < '3/1/2010 12:00:00 AM')基本上,有一個(gè)Users表,一個(gè)TrustAccount表和一個(gè)TrustAccountLog表。用戶:包含用戶及其詳細(xì)信息TrustAccount:一個(gè)用戶可以有多個(gè)TrustAccounts。TrustAccountLog:包含對(duì)所有TrustAccount“運(yùn)動(dòng)”的審核。一個(gè)TrustAccount與多個(gè)TrustAccountLog條目關(guān)聯(lián)?,F(xiàn)在,此查詢?cè)赟QL Server Management Studio中以毫秒為單位執(zhí)行,但是由于某些奇怪的原因,它在我的C#應(yīng)用程序中永久占用時(shí)間,有時(shí)甚至超時(shí)(120s)。簡(jiǎn)而言之,這是代碼。它在循環(huán)中被多次調(diào)用,并且語(yǔ)句已準(zhǔn)備好。cmd.CommandTimeout = Configuration.DBTimeout;cmd.CommandText = "SELECT tal.TrustAccountValue FROM TrustAccountLog AS tal INNER JOIN TrustAccount ta ON ta.TrustAccountID = tal.TrustAccountID INNER JOIN Users usr ON usr.UserID = ta.UserID WHERE usr.UserID = @UserID1 AND ta.TrustAccountID = @TrustAccountID1 AND tal.trustaccountlogid = (SELECT MAX (tal.trustaccountlogid) FROM TrustAccountLog AS tal INNER JOIN TrustAccount ta ON ta.TrustAccountID = tal.TrustAccountID INNER JOIN Users usr ON usr.UserID = ta.UserID WHERE usr.UserID = @UserID2 AND ta.TrustAccountID = @TrustAccountID2 AND tal.TrustAccountLogDate < @TrustAccountLogDate2 ))";cmd.Parameters.Add("@TrustAccountID1", SqlDbType.Int).Value = trustAccountId;cmd.Parameters.Add("@UserID1", SqlDbType.Int).Value = userId;cmd.Parameters.Add("@TrustAccountID2", SqlDbType.Int).Value = trustAccountId;cmd.Parameters.Add("@UserID2", SqlDbType.Int).Value = userId;// And then...reader = cmd.ExecuteReader();if (reader.Read()){ double value = (double)reader.GetValue(0); if (System.Double.IsNaN(value)) return 0; else return value;}else return 0;
.NET應(yīng)用程序中的SQL查詢速度較慢,但??在SQL Server Management
qq_遁去的一_1
2019-10-28 17:00:38