No estoy seguro de qué proveedor tiene que proporciona db.MYTABLE. Realmente no es posible responder a su pregunta a menos que sepamos cómo se comporta db.MYTABLEs.
En LINQ normal, el salto no solo salta adelante; tiene que recorrer la cantidad de datos para saltar. Por lo tanto, para su tabla de datos de 14 gb, se repetirá a través del primer número de registros "omitidos". Si esta iteración es lenta, no está guardando ninguna CPU/tiempo omitiendo.
Para algunos proveedores, p. una fuente SQL, el salto se puede implementar usando cursores, que de nuevo pueden ser lentos. Si se trata de SQL Server, puede optimizarse con una palabra clave que puede ser más rápida.
Si es LINQ a SQL, que traduce la consulta en SQL mediante una cláusula de "no existe", que será extremadamente lenta, ya que tiene que pasar por todo el mesa si la cláusula NOT EXISTS no alcanza un índice Ver la siguiente (link):
LINQ a SQL traduce Saltar mediante el uso de una subconsulta con el SQL no cláusula EXISTS. Esta traducción tiene las siguientes limitaciones:
El argumento debe ser un conjunto. Las multiempadas no son compatibles, incluso si están ordenadas.
La consulta generada puede ser mucho más compleja que la consulta generada para la consulta base en la que se aplica el salto. Esta complejidad puede causar una disminución en el rendimiento o incluso un tiempo de espera.
En otras palabras, el doc dice "no lo hagas".
Solo para proveedores con funciones de acceso aleatorio, p. una matriz en memoria saltará muy rápido porque el proveedor puede adelantarse.
El peor caso sería si está ejecutando en un proveedor que clasifica automáticamente todo el conjunto de datos si utiliza Omitir/Tomar. Si tiene 14 gb de datos, este tipo va a ser muy lento.
Necesita experimentar un poco más para ver si su programa se cuelga en el salto, o simplemente acaparando toda la CPU que intenta iterar.
Si solo está tratando de dividir sus datos en fragmentos manejables, probablemente no debería estar usando omisión/recepción, que vuelve a consultar la fuente de datos cada vez.
¿Funciona correctamente sin 'Skip' y/o' Take'? – Jon
Sin Omitir, sí lo hace –
La tabla contiene datos de 14 gb. Entonces no puedo obtenerlos a todos. Tengo que omitir y tomar –