У меня есть два запроса в моем коде:Могу ли я оптимизировать этот запрос дальше?
var query1 = (
from c in db.HugeTableData
where c.price >= 1000
group c by new { c.year, c.month, c.day } into cgroup
select new { Count = cgroup.Count(), cgroup.Key })
.OrderByDescending(x => x.Key.year).ThenByDescending(y => y.Key.month)
.ThenByDescending(z => z.Key.day).Take(50);
//Some other code
var query2 = (
from c in db.HugeTableData
where c.price >= 1000 && c.check == true
group c by new { c.year, c.month, c.day } into cgroup
select new { Count = cgroup.Count(), cgroup.Key })
.OrderByDescending(x => x.Key.year).ThenByDescending(y => y.Key.month)
.ThenByDescending(z => z.Key.day).Take(50);
Это два запроса Получение квалифицированных записей из таблицы, которая имеет огромное количество данных, и, как вы видите, единственное различие между ними является && c.check == true
часть, но я Я не ищу, как я могу его реорганизовать. К сожалению, этот код работает очень медленно, теперь мой вопрос: является ли низкая производительность, потому что два обратных перехода к базе данных? А также, если у меня есть огромные данные, то здесь хранится процедура?
EDIT: код, который использует эти запросы, как показано ниже:
foreach (var item in query1)
{
DateTime dt = Convert.ToDateTime(item.Key.year + "-" + item.Key.month + "-" + item.Key.day);
string temp = MyConvertToStringMethod(dt);
if (firstDictionary.ContainsKey(temp))
firstDictionary[temp] = item.Count;
}
И еще один foreach
для query2
похожее на это, чтобы заполнить secondDictionary
.
Можете ли вы показать код, который использует эти запросы? – Enigmativity
@ Энигматичность ОК. Проверьте мой отредактированный вопрос. –
@Enigmativity У вас есть идеи? –