Я использую Entity Framework 4 в проекте, и у меня есть один конкретный запрос, который повторяется снова и снова, и мне нужно быть уверенным, что он оптимизирован настолько хорошо, насколько это возможно.
У меня есть одна таблица базы данных с именем Items
, в которой есть следующие важные столбцы:
id (primary key)
name
Другая таблица с именем FavoriteItems
имеет два важных столбца
itemId (foreign key to the items table)
accountId( foreign key to the account table)
В методе в моем коде у меня есть accountId
и searchTerm
в качестве входных параметров.
Метод должен возвращать все элементы из таблицы элементов, у которой searchTerm является частью его имени, кроме того, он должен быть отсортирован по алфавиту, но все элементы, у которых есть его Id, найдены в таблице FavoriteItems, где accountId совпадает с accountId данный параметр должен быть помещен сверху (и отсортирован по алфавиту). Кроме того, результат поиска должен содержать логическое значение, указывающее, является ли это любимым элементом или нет.
У меня это работает, но запрос кажется неуклюжим. Как бы вы написали этот запрос элегантным и производительным способом?