Оптимизировать запрос структуры объекта

Я пытаюсь сделать клон StackOverflow в свое время, чтобы изучить EF6 и MVC5, в настоящее время я использую OWin для аутентификации.

Все работает нормально, когда у меня есть 50-60 вопросов, я использовалГенератор данных Red Gate и попробуйте увеличить до 1 миллиона вопросов с парой тысяч строк дочерних таблиц без взаимосвязи, просто чтобы немного «подчеркнуть» ORM. Вот как выглядит linq

var query = ctx.Questions
               .AsNoTracking()     //read-only performance boost.. http://visualstudiomagazine.com/articles/2010/06/24/five-tips-linq-to-sql.aspx
               .Include("Attachments")                                
               .Include("Location")
               .Include("CreatedBy") //IdentityUser
               .Include("Tags")
               .Include("Upvotes")
               .Include("Upvotes.CreatedBy")
               .Include("Downvotes")
               .Include("Downvotes.CreatedBy")
               .AsQueryable();

if (string.IsNullOrEmpty(sort)) //default
{
    query = query.OrderByDescending(x => x.CreatedDate);
}
else
{
    sort = sort.ToLower();
    if (sort == "latest")
    {
        query = query.OrderByDescending(x => x.CreatedDate);
    }
    else if (sort == "popular")
    {
        //most viewed
        query = query.OrderByDescending(x => x.ViewCount);
    }
}

var complaints = query.Skip(skipCount)
                      .Take(pageSize)
                      .ToList(); //makes an evaluation..

Излишне говорить, что я получаю таймауты SQL и после установкиMiniprofilerи посмотрите на созданный оператор sql, он состоит из нескольких сотен строк.

Я знаю, что я объединяю / включаю слишком много таблиц, но сколько проектов в реальной жизни, нам нужно только объединить 1 или 2 таблицы? Могут быть ситуации, когда нам нужно сделать это много соединений с многомиллионными строками, разве хранимые процедуры - единственный путь?

Если это так, будет ли EF подходить только для небольших проектов?

Ответы на вопрос(5)

Ваш ответ на вопрос