我有一个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); }
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。