Ищите несколько советов о том, как оптимизировать один из наших проектов.У нас есть система ASP.NET/C#, которая извлекает данные из данных SQL2008 и представляет их в DevExpress ASPxGridView.Полученные данные могут поступать из одной из нескольких баз данных - все они немного отличаются и регулярно добавляются и удаляются.Пользователю предоставляется список действующих "компаний", а данные извлекаются из соответствующей базы данных.
В данный момент данные извлекаются с использованием стандартного SqlDataSource и динамически созданного оператора SQL SELECT.В операторе есть несколько JOIN, а также необязательные ограничения WHERE, которые снова создаются динамически в зависимости от базы данных и уровня разрешений пользователя.
Все это прекрасно работает (честно!), Кроме производительности.Когда дело доходит до некоторых баз данных, существует несколько сотен тысяч строк, и поиск и разбиение по страницам данных происходит довольно медленно (базы данных уже правильно проиндексированы).Поэтому я искал способы ускорения работы системы, и она сводится к двум вариантам: XPO или LINQ.
LINQ, кажется, является популярным выбором, но я не уверен, насколько легко будет реализовать систему с такой динамичной природой - нужно ли мне создавать «определения» для каждой базы данных, которую LINQмог получить доступ?Я также немного не уверен в динамическом создании запросов LINQ, хотя, глядя на несколько примеров, эта часть, по крайней мере, кажется выполнимой.
XPO, с другой стороны, кажется, позволяет мне создавать данные XPOИсточник на лету.Тем не менее, я не могу найти слишком много информации о том, как присоединиться к другим таблицам.
Может кто-нибудь предложить какой-либо совет, какой метод - если таковой имеется - лучше всего попробовать и вписаться в этот проект?Или динамическая модель SQL, используемая в настоящее время, принципиально отличается от LINQ и XPO, и ее лучше оставить в покое?