2012-04-13 16 views
6

Me gustaría realizar una consulta de selección que devuelve una gran cantidad de datos en una base de datos. Dicha base de datos me obliga a dividir mis consultas en fragmentos de 10000 resultados con desplazamiento + límite. Mientras repito estos fragmentos, alguien más actualiza la base de datos, lo que en algunos casos puede hacer que el archivo base devuelva la misma fila varias veces. Lo manejo con un filtro de posprocesamiento que elimina filas con identificadores duplicados, pero me pregunto si existe una manera de crear un conjunto de consultas sql que me permita obtener una vista coherente de la base de datos en múltiples declaraciones de selección. es decir, COMIENZO + COMPROMISO, pero para seleccionar.Vista de solo lectura coherente de una base de datos

¿He mencionado que no soy una persona sql?

+1

Indique qué base de datos está utilizando y el código en su parte receptora (cualquiera que sea el idioma). Sospecho que la mayoría de los DBs pueden entregar más resultados cuando son llamados en modo de transmisión, pero eso no puede decirse con seguridad sin la información. –

+0

De hecho, debo confesar que este problema ocurrió mientras hablaba con un servidor virtuoso de sparql. Todas las bases de datos sql que he usado manejan este caso muy bien simplemente transmitiéndome los datos hasta que lo tengo todo. – mathieu

+0

Bueno, como se trata de un proyecto comercial, ¿has intentado preguntar a la línea directa? Es decir, debería proporcionarte una solución de alguna manera (ya sea en forma de transacciones o transmisión) y los desarrolladores sabrán mejor. –

Respuesta

1

No puedes:

ordenarlos por ID, obtener el primer 10000, obtener el ID.

segunda vez alrededor del filtro en una mayor que la ID, obteniendo la siguiente 10000.

hacer lo mismo hasta que su hecho

Select top(10000) * from Table order by id 

obtener la última Identificación

Select top(10000) * from Table where id> LAST order by id 

ÚLTIMA por supuesto sustituido por un número

Nivel muy bajo, pero debería resolver un problema d eliminar duplicados

+0

¿Qué ocurre si se elimina una fila mientras busco en la base de datos y se reutiliza su identificación de fila? – mathieu

+0

no obtendrá la versión "nueva" antes de la próxima vez que ejecute la aplicación. los identificadores de fila deben ser únicos, pero tal vez no en su caso ... ¿hay una marca de tiempo que pueda usar para la clasificación? Por lo tanto, conseguir nuevos últimos. Sin embargo, tendrá que hacer frente al mismo problema de identificación nuevamente ... – Steen

+0

@mathieu esa función debería funcionar si el ID es único. Si no es (puede reutilizarse), entonces debe generar una ID que sea única y usar esto. –

Cuestiones relacionadas