none
Cambiar el orden de una columna RRS feed

  • Pregunta

  • Tengo una tabla que tiene 75 columnas (campos) y los procedimientos almacenados de insert, update, delete etc 

    ya tienen ese mismo orden de los campos. lo que quiero saber es que si cambio el ultimo campo 75 a la posicion 2 en mi tabla se me afectan las consultas que tengo ya hechas. quiero cambiarlo a la posicion 2 por que tengo un reporte de cristal que usa ese campo 75 y veo que se tarde mucho por que tiene que leer por cada record del estudiante todos los campos hasta encontrar ese que se encuentra en la ultima posicion. osea si cambio el orden del campo en la tabla tambien tengo que cambiar el orden en todos los procedimientos almacenados o eso no importa. espero haberme explicado con claridad

    miércoles, 22 de mayo de 2019 14:52

Respuestas

  • Efrain,

    La posicion de columna en una tabla no es relevante y cambiarla no trae ningun beneficio.

    En cuanto a tu inquietud, si acostumbras a nombrar explicitamente las columnas en una sentencia INSERT y SELECT (buen habito) entonces no tienes de que preocuparte.

    -- no recomendado
    insert into T
    select * from R;

    -- Recomendado
    insert into T (col1,...,coln)
    select col1,...,coln from R;


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    • Marcado como respuesta Efrain Diaz miércoles, 22 de mayo de 2019 16:45
    miércoles, 22 de mayo de 2019 15:30
  • Hola Efrain diaz:

    Si los campos son nominales, tanto en los parámetros pasados como en la resolución de las inserciones no importa.

    Pero ojo si llamas a un procedure y le pasas los parámetros por posición sin nombre, entonces si importa.

    El Sql server coge los parámetros, por nombre, pero si no le pasas 1 por nombre a partir de ese utiliza la posición.

    No obstante, dudo mucho que crystal tarde por que tenga 75 columnas un reporte. Aproximadamente tardará lo mismo que si tiene 750 o 7.

    Ej.

    Tu procedure puede hacer un insert into tabla 

    Select 1,2,'valor' from consulta.

    Al no mencionar las columnas en la insert, van por posición.

    Lo mismo en la llamada al procedure.

    Tu creas un procedure create procedure sp_bla (@campo int, @campo2 varchar)

    pero en lenguaje cliente luego llamas a execute.nonquery() con addParameter, y no le pasas el nombre. Entonces te dará problemas.

    • Marcado como respuesta Efrain Diaz miércoles, 22 de mayo de 2019 16:45
    miércoles, 22 de mayo de 2019 15:22

Todas las respuestas

  • Hola Efrain diaz:

    Si los campos son nominales, tanto en los parámetros pasados como en la resolución de las inserciones no importa.

    Pero ojo si llamas a un procedure y le pasas los parámetros por posición sin nombre, entonces si importa.

    El Sql server coge los parámetros, por nombre, pero si no le pasas 1 por nombre a partir de ese utiliza la posición.

    No obstante, dudo mucho que crystal tarde por que tenga 75 columnas un reporte. Aproximadamente tardará lo mismo que si tiene 750 o 7.

    Ej.

    Tu procedure puede hacer un insert into tabla 

    Select 1,2,'valor' from consulta.

    Al no mencionar las columnas en la insert, van por posición.

    Lo mismo en la llamada al procedure.

    Tu creas un procedure create procedure sp_bla (@campo int, @campo2 varchar)

    pero en lenguaje cliente luego llamas a execute.nonquery() con addParameter, y no le pasas el nombre. Entonces te dará problemas.

    • Marcado como respuesta Efrain Diaz miércoles, 22 de mayo de 2019 16:45
    miércoles, 22 de mayo de 2019 15:22
  • Efrain,

    La posicion de columna en una tabla no es relevante y cambiarla no trae ningun beneficio.

    En cuanto a tu inquietud, si acostumbras a nombrar explicitamente las columnas en una sentencia INSERT y SELECT (buen habito) entonces no tienes de que preocuparte.

    -- no recomendado
    insert into T
    select * from R;

    -- Recomendado
    insert into T (col1,...,coln)
    select col1,...,coln from R;


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    • Marcado como respuesta Efrain Diaz miércoles, 22 de mayo de 2019 16:45
    miércoles, 22 de mayo de 2019 15:30