Acabo de comenzar a trabajar en un proyecto existente y veo la consulta que se parece a esto:
select 100. * somecolumn1 / NULLIF(somecolumn2, 0.) AS ColumnValue,
from dbo.SomeTable
No estoy seguro de qué es '.' operador en la declaración de selección. ¿Alguien podría ayudarme a entender?
Además, esto es solo una parte de la consulta masiva de SQL Server. Y si comento esta declaración de selección en particular, la consulta se ejecuta en aproximadamente 7 segundos, de lo contrario, toma aproximadamente 5 minutos ejecutar la consulta. ¿Se puede optimizar esta declaración?
SQL Server realiza la división de enteros. Entonces, 1/2 = 0, no 0.5.
Para evitar la división de enteros, desea utilizar valores con decimales. La forma más sencilla de lograrlo es utilizar literales numéricos. Siempre incluiría un 0
después (y antes) del lugar decimal, por lo que el valor es más fácil de ver:
select 100.0 * somecolumn1 / NULLIF(somecolumn2, 0.0) AS ColumnValue,
from dbo.SomeTable
A menudo lo logro multiplicando por 1.0. Alternativa, puede usar cast()
o convert()
en una columna de números enteros.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras