优化非hibernate查询
本文关键字:查询 hibernate 优化 | 更新日期: 2023-09-27 18:19:16
我有以下关系
class Author
{
int Id;
}
class Publisher
{
int Id;
}
class Book
{
Publisher Publisher;
Author Author;
DateTime PublishDate;
}
我想优化以下查询:
foreach (Publisher)
{
foreach (Author)
{
session.Query<Book>()
.Where(x=> x.Author.Id == Author.Id && x.Publisher.Id ==Publisher.Id)
.OrderByDescending(x=> x.PublishDate)
.Take(5);
}
}
我意识到这段代码的性能很糟糕,我如何改进它并在更少的查询中获得相同的结果?
非常感谢!
我们有很多方法可以做到。这取决于你的用例你先得到哪个对象
这里我提到了一种方法
DetachedCriteria forBook=DetachedCriteria.For<Book>();
forBook.CreateCriteria("Publisher");
forBook.CreateCriteria("Author");
ICriteria executableCriteria=forBook.GetExecutableCriteria(session);
executableCriteria.SetFirstResult(0).SetMaxResult(5);
executableCriteria.AddOrder(Order.Desc("PublishDate"));
executableCriteria.List<Book>();