Si una tabla cuenta con miles de registros se recomienda no regresar toda la información en una sola petición, sino irla regresando en partes. Puedes agregar el número máximo de registros que regresará el servicio agregando el PageSize en el atributo EnableQuery
De esta forma si desean obtener mas de 10 registros, solo se regresan los primeros 10 registros.
El servicio solo regresará los primeros 10 clientes.
Limitar Opciones de Consulta
Debes tomar en cuenta que los usuarios pueden realizar consultas por cualquier campo, por lo cual si una tabla tiene muchos registros, se pueden realizar filtros por campos que no tengan índices lo cual tendría ocupado tu servidor. Una de las opciones es no permitir que se hagan filtros u ordenamientos.
Puedes agregar las opciones que deseas permitir en tu servicio en el atributo Queryable mediante | puedes ir agregando las opciones que permites en tu servicio.
En este ejemplo solo permites que se use el método Skip y el Top
Limitar los campos para ordenar
Otra recomendación es que si permites la opción de ordenar permitas ordenar de preferencia por los campos por los cuales tienes un índice, de esta forma se utilizará el índice y la información se regresa de forma mas rápida. Agrega lo siguiente:
Agrega la opción AllowedOrderByProperties y entre paréntesis agrega los campos por los cuales si deseas permitir que ordenen los resultados.
Configuración general
También puedes configurar de forma general en el archivo startup.cs