Как уже отметили linq2sql в данном случае как морская свинка (не в море и не хрюкает).
И самое главное прилетает это в sql так, что планировщик/оптимизатор оказывается в затруднении.
Как итог - потеря производительности.
Посему правильный путь - построение хранимых процедур и linq-оперирования с уже отобранными оптимальным образом результатами выполнения процедур.
Это может показаться не по-книжке и не по феншую теоретических измышлений, но эффективно.