SQL ServerVideos
633
0

Optimizando consultas con COLUMNAS Calculadas

Las COLUMNAS Calculadas son una muy buena opción para resolver varios situaciones en nuestros diseños de tablas SQL.

En este video tutorial te muestro cómo usarlas en conjunto con Índices para mejorar la performance de tus consultas y procesos.

Te invito también a conocer mi curso completo sobre Performance el cual podes hacer online y a tu ritmo

Video tutorial

Código de ejemplo

-- COLUMNAS CALCULADAS Y PERFORMANCE

USE ADVENTUREWORKS2019
GO

SELECT SALESORDERID,
       ORDERQTY,
	   UNITPRICE 
  FROM SALES.SALESORDERDETAIL 
WHERE ORDERQTY * UNITPRICE > 100


-- AGREGAMOS COLUMNA CALCULADA

ALTER TABLE SALES.SALESORDERDETAIL
ADD TOTAL AS ORDERQTY * UNITPRICE 

SELECT SALESORDERID,
       ORDERQTY,
	   UNITPRICE 
  FROM SALES.SALESORDERDETAIL 
WHERE ORDERQTY * UNITPRICE > 100

SELECT SALESORDERID,
       ORDERQTY,
	   UNITPRICE 
  FROM SALES.SALESORDERDETAIL 
WHERE TOTAL > 100


CREATE NONCLUSTERED INDEX [IX1]
ON [SALES].[SALESORDERDETAIL] ([TOTAL])
INCLUDE ([SALESORDERID],[ORDERQTY],[UNITPRICE])

SELECT SALESORDERID,
       ORDERQTY,
	   UNITPRICE 
  FROM SALES.SALESORDERDETAIL 
WHERE TOTAL > 100


--------------------------
---- DEMO 2
----------------------------
DROP INDEX IF EXISTS [IX1] ON SALES.SALESORDERDETAIL


ALTER TABLE SALES.SALESORDERDETAIL
DROP COLUMN TOTAL

DROP INDEX IF EXISTS IX2 ON SALES.SALESORDERHEADER

CREATE INDEX IX2 ON SALES.SALESORDERHEADER (ORDERDATE) 
INCLUDE (SALESORDERID,
                                                                PURCHASEORDERNUMBER) 

SELECT SALESORDERID,
       ORDERDATE,
	   PURCHASEORDERNUMBER 

     FROM SALES.SALESORDERHEADER 
WHERE MONTH(ORDERDATE) = 8

ALTER TABLE SALES.SALESORDERHEADER 
ADD MES AS MONTH(ORDERDATE) 

DROP INDEX IX3 ON SALES.SALESORDERHEADER

CREATE INDEX IX3 ON SALES.SALESORDERHEADER (MES) 
INCLUDE (SALESORDERID,
                                                          ORDERDATE,
                                                                PURCHASEORDERNUMBER) 
GO


SELECT SALESORDERID,
       ORDERDATE,
	   PURCHASEORDERNUMBER 

     FROM SALES.SALESORDERHEADER 
WHERE MONTH(ORDERDATE) = 8

ALTER TABLE SALES.SALESORDERHEADER 
DROP COLUMN MES
You must be logged in to post a comment.