none
¿qué ocupa menos espacio de almacenamiento en un campo decimal? ¿El valor 0 o el valor Null? RRS feed

  • Pregunta

  • Buenos días.

    Trabajo con SQL Server 2014 y me encuentro con la duda que enuncio en el título de este post.

    Resulta que tengo una tabla donde una importante parte de los registros contiene valor Null en muchos de sus campos decimales. Mi objetivo es que estos campos ocupen el menor espacio en disco duro posible. ¿qué valor ocupa menos?¿Null o cero?

    Por otro lado me preocupa el hecho de que si pongo valor NuLL en un campo decimal este me de problema a la hora de ejecutar claúsulas como medias móviles y cosas similares. De cara a dichos cálculos me interesa que SQL considere estos campos como valor=0 y así lo compute en la fórmula correspondiente.

    ¿qué consejo podeis darme en este sentido?

    Muchas gracias

    Un saludo

    Angel

    viernes, 23 de diciembre de 2016 8:53

Respuestas

  • Hola.

    Mi entendimiento es que si tu campo está definido como DECIMAL y permite NULL, pues tiene asociado como tamaño lo que se definió y simplemente, al permitir NULL, permitirá que algo indefinido pueda estar en el campo.

    Una alternativa a tu escenario puede ser que el campo sea NOT NULL y que tenga un valor por defecto de 0,0. Así, si no se requiere valor por alguna circunstancia, siempre queda en cero. Adicionalmente, te evitas el ISNULL, aunque si revisar aspectos como división por cero, entre otros.

    Revisa este artículo, que me ha ayudado a mi, para entender mejor ciertos aspectos de NULL: How to Get NULLs Horribly Wrong in SQL Server.

    Saludos,


    Guillermo Taylor F.
    MVP Data Platform & IT Pro
    Mi Blog

    • Propuesto como respuesta Joyce_ACModerator viernes, 23 de diciembre de 2016 18:23
    • Marcado como respuesta Angeleci viernes, 23 de diciembre de 2016 18:35
    viernes, 23 de diciembre de 2016 11:38