En baştaki hatan zaten Linq ile olaya girmen. Linq full-text desteklemiyor. Bu nedenle yazdığın her contains kelimesi sql'de like olarak generate oluyor ve çok büyük hız kaybı yaşıyorsun. ContainAll veya ContainAny biraz daha hızlı çalışır. Ki query ve entitylerde desteklenmiyor. Linkte görebilirsin. http://msdn.microsoft.com/en-us/library/bb738638.aspx

İlk olarak şu şekilde bir function yarat.
create function udf_Arama
(@kelime nvarchar(500))
returns table
as
return (select [id],[en],[tr]
from containstable(Cumle,(description,title),@kelime))
Kodunda şu şekilde çağırabilirsin.
var Result = from r in DB.Cumle
join fts in DB.udf_Arama(kelime) on r.en equals fts.en
select r;
veya bunların hepsini geçip direk şunu uyguyabilirsin. Bundaki performans farkı daha iyidir.
http://sqlblogcasts.com/blogs/simons...searching.aspx