Я выполняю sql-запрос с использованием PetaPoco, который обычно возвращает около 4000 строк.Медленная производительность при использовании Paged Fetch
Вот код, который строит SQL:
var sql = PetaPoco.Sql.Builder
.Append("Select ")
.Append("Participants.ParticipantID")
.Append("From Participants")
.Append("Inner Join Organizations")
.Append("On Participants.OrgID = Organizations.OrgID")
.Append("Left Join Departments")
.Append("On Participants.DepartmentID = Departments.DepartmentID")
.Append("Where")
.Append("Participants.OrgID = @0", 6328);
.Append("and Participants.Last_Name like @0", "P%");
.Append("and ")
.Append("Participants.OrgID in ")
.Append(" (")
.Append(" Select")
.Append(" OrgID ")
.Append(" from ")
.Append(" Organizations")
.Append(" Where")
.Append(" AssociationID = @0", 318)
.Append(" )");
Если я тяну весь набор записей назад и использовать LINQ на страницу результатов, страница отображается примерно 250мс. Вот код:
List<ParticipantVMItem> PagedResult = null;
var FullResult = db.Fetch<ParticipantVMItem>(sql);
PagedResult = FullResult.Skip((PageNo - 1) * PageSize).Take(PageSize).ToList();
Если я пытаюсь использовать функцию подкачки, встроенную в PetaPoco, страница берет на себя 4200ms для визуализации. Вот код:
List<ParticipantVMItem> PagedResult = null;
PagedResult = db.Fetch<ParticipantVMItem>(4, 250, sql);
Что нечетности Glimpse и Sql Profiler показать мне, что фактические команды SQL, работающие в любом случае занимает приблизительно одинаковую длину времени. Однако Глимпес предполагает, что во втором случае задержка происходит все до открытия соединения. Может ли кто-нибудь объяснить это поведение?
Дополнительная информация: Я бегу Sql Server 2008R2
Я обновлю свой вопрос с помощью своего sqlcode. – Aheho
Есть ли у вас такая же проблема с NPoco? Вы можете попробовать? Он использует diff regex. – Schotime
Я выделил этот вопрос на следующий REGEX: \t \t \t public static Regex rxOrderBy = new Regex (@ "\ bORDER \ s + BY \ s + (?!. *? (?: \) | \ S +) AS \ s) (?: \ ((?> \ ((?) | \) (? <-depth>) |.?) * (? (глубина) (?!)) \) | [\ w \ (\) \ .]) + (?: \ s + (?: ASC | DESC))? (?: \ s *, \ s * (?: \ ((?> \ ((? ) | \) (? <-depth>) | (?) * (? (глубина) (?!)) \) \ [\ w \ (\) \.]) + (?: \ s + (?: ASC | DESC))?) * ", RegexOptions.RightToLeft | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline | RegexOptions.Compiled); –
Aheho