Hola si incluyo el 'max' me obliga a hacer un group by y no puedo, porque lo que busco es el importe del ultimo movimiento de un articulo determinado, movimiento que no sé cuando se realizó. Efectivamente hay un ORDER BY en la clausula. La sentencia es la siguiente: DECLARE @CURSOR SCROLL CURSOR FOR SELECT mtanys, mtset, mtqtat FROM movtda WHERE Mtemp=:@empresa and Mtten=:Ctten and mtart=:ctart and mttipm='IF' ORDER BY mtanys, mtset Pero esta sentencia está dentro de un bucle que va leyendo articulo por articulo y hace unas 5000 lecturas y por lo tanto ejecuta esta sentencia unas 5000 veces . Se trata de mirar el valor del ultimo movimiento de cada articulo. Mi duda viene porque si esto mismo lo hago con SETLL/ READP va bastante más rápido y algo debo de estar haciendo mal en SQL porque siempre se habla de que el rendimiento es mejor. Por cierto, Santiago, el archivo es un archivo definido por DDS 'tradicionales'. Igualmente le puedo crear un indice? Salut
____________________________________________________ Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L.

