|
Модераторы: gambit |
|
Scarabe |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 16.11.2012 Репутация: нет Всего: нет |
Добрый день всем. В общем суть в следующем, имеется Mysql база, в таблице 1млн записей, есть индекс по полю Alias. Имеется Linq запрос context.Where(x=>x.Alias != "").OrderBy(a => a.Alias).Skip(80000).Take(500) блабла... EF переводит его в
SELECT `Extent1`.`Id`, `Extent1`.`Alias`, FROM `Routes` AS `Extent1` WHERE @gp1 != Extent1.Alias ORDER BY `Extent1`.`Alias` ASC LIMIT 80000,500 Так вот, mysql в таком случае не использует идекс Alias и запрос выполняется 12с, вместо 0.2с при инвентировании WHERE, то есть WHERE `Extent1`.`Alias != "". Как сделать в Linq, чтобы было не WHERE @gp1 != Extent1.Alias, WHERE Extent1.Alias != @gp1 ? Или может можно как-нибудь использовать FORCE INDEX? |
|||
|
||||
jonie |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: нет Всего: 118 |
ыыыЫ. "не было проблем, так решили юзать ORM"...
в целом как я знаю для EF Code First у вас врядли что-то получится путное (кроме писанины своего генератора)... ну правда можно вроде бы свой SQL исполнять, но тогда смысла особого в orm нету. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |