c# – SQL查询在代码中比查询db direct需要更长的时间
发布时间:2020-12-15 21:23:52 所属栏目:百科 来源:网络整理
导读:我有一个SQL查询,在我使用SQL Management Studio时执行时间不到一秒,但是当我的代码执行它时,从数据库服务器获取结果需要30秒以上.结果包含1700行.另一个返回900行的类似查询需要几毫秒才能执行.这种奇怪行为的原因是什么? public SqlDataReader ExecuteRea
我有一个SQL查询,在我使用SQL Management Studio时执行时间不到一秒,但是当我的代码执行它时,从数据库服务器获取结果需要30秒以上.结果包含1700行.另一个返回900行的类似查询需要几毫秒才能执行.这种奇怪行为的原因是什么?
public SqlDataReader ExecuteReader(string strSQL,ArrayList arParams) { OpenConnection(); SqlCommand myCommand = new SqlCommand(strSQL,myConnection); myCommand.CommandTimeout = intTimeout; foreach (SqlParameter myParameter in arParams) myCommand.Parameters.Add(myParameter); return myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection); } STRSQL: SELECT [Group].[Id],[Group].[intCustomerId],[Group].[strName],[Permission].[dtmCreated],[Permission].[intPermissionTypeId],[Permission].[intObjectTypeId],[Permission].[intObjectId],[Permission].[blnActive],[Permission].[blnHaveAccess],[Permission].[intLevelTypeId] FROM [Group] LEFT JOIN Permission ON [Group].[Id] = intGroupId AND intObjectId = @ObjectId AND intObjectTypeId = @ObjectTypeId AND intLevelTypeId = @LevelType AND intPermissionTypeId = @PermissionTypeId AND blnActive = 1 WHERE [Group].[intCustomerId] = @CustomerId AND [Group].[blnDeleted] = 0 ORDER BY strName,blnActive DESC arParams: arParams.Add(DatabaseHandler.MakeSqlParameter("@CustomerId",customer.Id)); arParams.Add(DatabaseHandler.MakeSqlParameter("@ObjectId",masterprocess.Id)); arParams.Add(DatabaseHandler.MakeSqlParameter("@ObjectTypeId",Convert.ToInt32(ObjectType.MasterProcess))); arParams.Add(DatabaseHandler.MakeSqlParameter("@PermissionTypeId",Convert.ToInt32(permissiontype))); arParams.Add(DatabaseHandler.MakeSqlParameter("@LevelType",Convert.ToInt32(leveltype))); DatabaseHandler.MakeSqlParameter: public static SqlParameter MakeSqlParameter(String strName,int intInput) { return new SqlParameter(strName,intInput); } 解决方法
根据您对评论的回复,我会说正确的解决方案是索引.
最简单的方法是在运行普通查询时运行sql日志记录,然后运行sql profiler运行. 根据其建议,它可能会发现缺少索引. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |