Realmente con mi pregunta original no preguntaba por las diferencias entre DDS y DDL ni iniciar un conversión sobre ese tema (tampoco me importa que ocurra). Creo que tengo bastante claro las diferencias y las ventajas/inconvenientes de cada modelo, mi duda era más "existencial". Sólo quería saber si, a parte de las diferencias que la mayoría conocemos: - CRTLF vs CREATE INDEX - Lógico sin claves vs vista SQL - Lógico con claves vs índice SQL - Tamaño de página - etc los índices disponían de una "característica" que decantara la balanza. Con los conocimientos (que son pocos) sobre el tema, mi experiencia es: - Tengo la sensación que el motor SQL SQE sí que tiene en cuenta los lógicos para analizar y generar los planes de acceso. Supongo que el motor busca vías de acceso, independientemente si son lógicos o índices. - Por lo que he leído, un índice es un lógico con clave con un tamaño de página mayor. De hecho, en el manual dice que se utiliza CRTLF para crear el índice. - A efectos de uso en un RPG con operaciones de E/S nativas no hay diferencias en utilizar uno u otro. - Al crear un índice o lógico el sistema aprovecha vías de acceso ya existentes para crear el nuevo índice/lógico. - Las herramientas de IBM (sobre todo el navegador de operaciones o "navigator for i") diferencian claramente el objeto que es un índice de lo que es un lógico. Respecto a tu respuesta, creo que en V6R1 (no sé si V5R4) sí se pueden crear índices con selección de registros ya que disponde de una cláusula WHERE en el CREATE INDEX. Estoy de acuerdo contigo que la documentación que añadíamos a las DDS parece menos vistosa en un miembro fuente con CREATE TABLE. Habría que plantearse si es oportuno crear una documentación a parte (word, excel, la herramienta que sea) con la información de cada campo y tabla. Respecto a la técnica descrita para crear archivos temporales o intermedios, yo utilizo otra. Normalmente estos archivos existen vacíos en una biblioteca (de programas o de plantillas). Cuando un programo necesita uno de ellos, lo duplica en la QTEMP (CRTDUPOBJ) o en la biblioteca que se quiera y luego los usa (OVRDBF). Mi experiencia es, que al sistema le cuesta más crear un archivo desde cero (CRTLF o CREATE TABLE) que duplicarlo. Gracias por tu aportación. Javier
________________________________ De: forum.help400-boun...@listas.combios.es [mailto:forum.help400-boun...@listas.combios.es] En nombre de Angel ALMEIDA (DHL ES) Enviado el: miércoles, 22 de octubre de 2014 11:22 Para: forum.help400 Asunto: RE: Diferencias entre archivo lógico e índices SQL Hola, Sin entrar en las grandes diferencias que existen entre DDS y DDL, evidentemente son muchas (tampoco hay que olvidar que las DD's ya han dejado de recibir mejoras), si quería apuntar algunas "pequeñas diferencias" que afectan al RPG. El fichero lógico además de claves, permite seleccionar registros, un caso típico sería un fichero que tenga registros suprimidos (No físicamente), si no un campo con una marca, el lógico estaría construido con un clave de acceso y una selección de que solo mostrase los que tuviesen un determinado campo en blanco ó que fuese diferente a "B" de baja, los RPG que accediesen a este fichero no tendría que preocuparse de filtrar los registros de baja, si ahora trasladamos esto a DDL, tendríamos que hacer CREATE TABLE.., CREATE INDEX y CREATE VIEW, el índice no permite filtrar y la vista no permite especificar claves, así que nuestro RPG tendría que sufrir modificaciones. No estoy defendiendo las DDS, sé que están muertas y las posibilidades de la DDL son muchas y además seguirán recibiendo mejoras, pero es cierto que las aplicaciones que han convivido con DDS no son tan fáciles de migrar, otra de las cosas que no me gusta demasiado de las DDL es la forma de crearlas, ahora disponemos de una DDS en fichero con todos los detalles y comentarios que quiera poner, puedo utilizar esta DDS desde un CLLE ó desde 200, siempre utilizo la misma descripción, solo hago el CRTPF con el nombre y ya está, a la hora de trabajar con ficheros temporales, los que normalmente creamos en QTEMP es muy sencillo, al comienzo del CCLE hacemos el CRTPF y cuando llamamos al RPG el fichero ya existe, si lo hacemos con DDL, yo normalmente los CREATE los hago dentro del RPG pero si reutilizo ese fichero para el ciclo del RPG, cuando se ha abierto el programa el fichero todavía no existe y evidentemente el RPG da error, otro inconveniente es que si lo utilizo en 10 RPG distintos tengo que tener el CREATE TABLE con todos sus definiciones de campos en los 10 programas, si quiero cambiar un campo tendría que hacerlos 10 veces, así que hay que buscar soluciones alternativas que evidentemente alteran la forma de trabajar a la que estamos acostumbrados con las DDS. Es cierto que se pueden buscar soluciones más elegantes, por no son tan sutiles, por lo menos desde mi punto de vista. Saludos, Angel Almeida. From: forum.help400-boun...@listas.combios.es [mailto:forum.help400-boun...@listas.combios.es] On Behalf Of Javier Mora Sent: martes, 21 de octubre de 2014 19:53 To: forum.help400 Subject: RE: Diferencias entre archivo lógico e índices SQL Creo que tengo bastante claro problemas e inconvenientes de utilizar uno u otro tipo de objeto. Lo que realmente me llama la atención es que en realidad son lo mismo a efectos de programación RPG, cuando yo creía que no era así. Es más comparando los tamaños de un lógico con clave con respecto a un índice son, más o menos, iguales con pequeñas diferencias en función del tamaño de página que elija para el índice. Lo curioso es que IBM diferencia claramente un lógico de un índice y, por eso, preguntaba si alguien pudiera tener una respuesta que aclarara esta "duda existencial". Gracias. ________________________________ De: forum.help400-boun...@listas.combios.es [mailto:forum.help400-boun...@listas.combios.es] En nombre de Nicolas Silva Enviado el: martes, 21 de octubre de 2014 18:24 Para: forum.help400 Asunto: Re: Diferencias entre archivo lógico e índices SQL Hola todos, si es muy parecido pero no es exactamente lo mismo. El archivo logico lo atiende el motor CQE (Classic Query Engine) mientrar que el indice SQL lo atiende el motor SQL (SQL Query Engine). En RPG puedes utilizar un indice SQL en la hoja F al igual que cualquier logico creado con DDS. Espero sirva el aporte. Saludos. Nicolas. El 21 de octubre de 2014, 9:10, Javier Mora <jm...@musgrave.es> escribió: Hola a tod@s: me ha surgido una gran duda a raiz de una optimización de una sentencia SQL. Hasta la fecha creía que un índice de SQL (CREATE INDEX) era un objeto diferente a un archivo lógico (CRTLF). Pensaba que un índice no podía utilizarse en la hoja F de un programa RPG para utilizarse con las sentencias de E/S (CHAIN, READ, etc). Sin embargo, ¡sí se puede!, como si fuera un lógico más. Yo pensaba que al crear un índice el sistema sólo guardaba en el objeto la vía de acceso, pero no tenía información sobre el resto de los campos del registro. Este hecho era el que "impedía" su uso como archivo lógico en un RPG. Sin embargo, hemos comprobado (por casualidad) que incluso podemos utilizar el índice en un DFU para actualizar el registro. A parte del tamaño de la página de datos (64kb) ¿qué diferencias hay entre un archivo lógico y un índice? ¿Estoy yo confundido con respecto a los campos incluidos en el índice? Un saludo y gracias a todos por vuestros comentarios, Javier Mora ____________________________________________________ Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L.
____________________________________________________ Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L.