Una pequeña nota sobre la consulta:
Dependiendo de los índices (ascendente, descendente) probablemente la consulta mejore si pones max(id). Obviamente el registro será del último id y no del primero.
Si no te importe cuál de los registros salga, puedes probar con FIRST 1 id. Esto te seleccionará uno de los registros, pero no te asegura cual de todos. Se lo supone más óptimo porque en cuanto encuentra 1 deja de buscar. En los otros casos debe buscar en todos los que se cumplan la condición (t1.referencia=t2.referencia) y luego seleccionar uno.
Código SQL
[-]
select * from tabla t1 where id = (select min(id) from tabla t2 where t1.referenca=t2.referencia)
select * from tabla t1 where id = (select max(id) from tabla t2 where t1.referenca=t2.referencia)
select * from tabla t1 where id = (select first 1 id from tabla t2 where t1.referenca=t2.referencia)