| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > LINQ (Language-Integrated Query) > Entity Framework и MySql индекс |
| Автор: Scarabe 16.11.2012, 15:56 |
| Добрый день всем. В общем суть в следующем, имеется 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 9.7.2013, 22:15 |
| ыыыЫ. "не было проблем, так решили юзать ORM"... в целом как я знаю для EF Code First у вас врядли что-то получится путное (кроме писанины своего генератора)... ну правда можно вроде бы свой SQL исполнять, но тогда смысла особого в orm нету. |