Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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 нету.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)