У меня есть запрос Linq To Sql на моем сайте asp.net.
Этот запрос тоже работает Медленно и я уверен, что его можно улучшить.
Может кто-нибудь помочь мне переписать этот запрос?
Я предполагаю, что использование "join" сделает это быстрее, но не сможет сделать это правильно. (
Вот запрос: (входные параметры: INT_GENDER)
var users = from u in db.Users
where (u.gender == INT_GENDER) && (u.age > 25)
let fileId = (from f in db.Files
where f.username == u.username && f.approved
orderby f.primary
select f.id).FirstOrDefault()
let answer = (from a in db.Answers
where (a.username == u.username) &&
(a.q_id == (from q in db.Questions where q.type == 1
select q.id).FirstOrDefault()) &&
a.approved
select a).FirstOrDefault()
select new {
Username = u.u_username,
FileId = fileId !=null ? fileId : GetEmptyFileId(),
Answer = (answer == null ? "" : (answer.approved ? answer.value: "Empty"))
};
Запрос основан на 3 таблицах.
Таблицы:
1. Пользователи
2. Файлы
3. Ответы
- Столбец имени пользователя в таблице пользователей является идентификатором.
- Каждый пользователь может иметь много или ни одного файла.
- Каждый пользователь может иметь много или ни одного ответа.
Спасибо!
Dan