2010-06-07 14 views

Respuesta

22

REDUCIDO es como un "mejor esfuerzo" DISTINTO. Mientras que DISTINCT garantiza sin resultados duplicados, REDUCED puede eliminar algunos, todos, o no duplicados.

¿Cuál es el punto? Bien DISTINCT puede ser costoso; REDUCED puede hacer el trabajo directo de deduplicación (por ejemplo, eliminar resultados repetidos inmediatamente) sin tener que recordar cada fila. En muchas aplicaciones, eso es lo suficientemente bueno.

Habiendo dicho que nunca he usado REDUCE, nunca he visto a nadie usar REDUCED, y nunca he visto REDUCIDO mencionado en una charla o tutorial.

+1

acaba de encontrar esto: http://www.franz.com/agraph/support/documentation/current /twinql-tutorial.html#header3-92 dice: "Si no necesita duplicados para eliminar, pero tampoco necesita las entradas redundantes", que sería el caso si confía en que los recuentos son correctos, por ej. suficiente, entonces puede especificar REDUCIDO en lugar de DISTINCT. ** Esto permite a AllegroGraph descartar valores duplicados si es ventajoso hacerlo. ** – Tomalak

+3

Utilizamos REDUCED al tratar con conjuntos de resultados muy grandes donde DISTINCT sería demasiado lento, pero hay muchos duplicados. Sin embargo, es bastante raro que sea útil. –

1

En mi mente (y en mi propia implementación de SPARQL) REDUCED es efectivamente una restricción DISTINCT opcional que solo se aplica si el motor lo considera necesario, es decir, el motor de consulta decidirá si elimina o no los resultados duplicados en función del consulta

En mi propia aplicación sólo eliminar duplicados cuando se reduce si se ha utilizado OFFSET/LIMIT también se ha utilizado