mirror of
https://github.com/Microsoft/sql-server-samples.git
synced 2025-12-08 14:58:54 +00:00
+108
-108
@@ -1,109 +1,109 @@
|
||||
-- ***************************************************** --
|
||||
-- Purpose of this script: make WideWorldImportersDW
|
||||
-- bigger - so you can see more impactful
|
||||
-- Intelligent QP demonstrations (aka.ms/iqp)
|
||||
--
|
||||
-- Script last updated 05/03/2019
|
||||
--
|
||||
-- Database backup source: aka.ms/wwibak
|
||||
--
|
||||
-- Initial database file to restore before beginning this script:
|
||||
-- WideWorldImportersDW-Full.bak
|
||||
-- ***************************************************** --
|
||||
|
||||
USE WideWorldImportersDW;
|
||||
GO
|
||||
|
||||
/*
|
||||
Assumes a fresh restore of WideWorldImportersDW
|
||||
*/
|
||||
|
||||
IF OBJECT_ID('Fact.OrderHistory') IS NULL BEGIN
|
||||
SELECT [Order Key], [City Key], [Customer Key], [Stock Item Key], [Order Date Key], [Picked Date Key], [Salesperson Key], [Picker Key], [WWI Order ID], [WWI Backorder ID], Description, Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Total Including Tax], [Lineage Key]
|
||||
INTO Fact.OrderHistory
|
||||
FROM Fact.[Order];
|
||||
END;
|
||||
|
||||
ALTER TABLE Fact.OrderHistory
|
||||
ADD CONSTRAINT PK_Fact_OrderHistory PRIMARY KEY NONCLUSTERED([Order Key] ASC, [Order Date Key] ASC)WITH(DATA_COMPRESSION=PAGE);
|
||||
GO
|
||||
|
||||
CREATE INDEX IX_Stock_Item_Key
|
||||
ON Fact.OrderHistory([Stock Item Key])
|
||||
INCLUDE(Quantity)
|
||||
WITH(DATA_COMPRESSION=PAGE);
|
||||
GO
|
||||
|
||||
CREATE INDEX IX_OrderHistory_Quantity
|
||||
ON Fact.OrderHistory([Quantity])
|
||||
INCLUDE([Order Key])
|
||||
WITH(DATA_COMPRESSION=PAGE);
|
||||
GO
|
||||
|
||||
/*
|
||||
Reality check... Starting count should be 231,412
|
||||
*/
|
||||
SELECT COUNT(*) FROM Fact.OrderHistory;
|
||||
GO
|
||||
|
||||
/*
|
||||
Make this table bigger (exec as desired)
|
||||
Notice the "GO 4"
|
||||
*/
|
||||
INSERT Fact.OrderHistory([City Key], [Customer Key], [Stock Item Key], [Order Date Key], [Picked Date Key], [Salesperson Key], [Picker Key], [WWI Order ID], [WWI Backorder ID], Description, Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Total Including Tax], [Lineage Key])
|
||||
SELECT [City Key], [Customer Key], [Stock Item Key], [Order Date Key], [Picked Date Key], [Salesperson Key], [Picker Key], [WWI Order ID], [WWI Backorder ID], Description, Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Total Including Tax], [Lineage Key]
|
||||
FROM Fact.OrderHistory;
|
||||
GO 4
|
||||
|
||||
/*
|
||||
Should be 3,702,592
|
||||
*/
|
||||
SELECT COUNT(*) FROM Fact.OrderHistory;
|
||||
GO
|
||||
|
||||
IF OBJECT_ID('Fact.OrderHistoryExtended') IS NULL BEGIN
|
||||
SELECT [Order Key], [City Key], [Customer Key], [Stock Item Key], [Order Date Key], [Picked Date Key], [Salesperson Key], [Picker Key], [WWI Order ID], [WWI Backorder ID], Description, Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Total Including Tax], [Lineage Key]
|
||||
INTO Fact.OrderHistoryExtended
|
||||
FROM Fact.[OrderHistory];
|
||||
END;
|
||||
|
||||
ALTER TABLE Fact.OrderHistoryExtended
|
||||
ADD CONSTRAINT PK_Fact_OrderHistoryExtended PRIMARY KEY NONCLUSTERED([Order Key] ASC, [Order Date Key] ASC)
|
||||
WITH(DATA_COMPRESSION=PAGE);
|
||||
GO
|
||||
|
||||
CREATE INDEX IX_Stock_Item_Key
|
||||
ON Fact.OrderHistoryExtended([Stock Item Key])
|
||||
INCLUDE(Quantity);
|
||||
GO
|
||||
|
||||
/*
|
||||
Should be 3,702,592
|
||||
*/
|
||||
SELECT COUNT(*) FROM Fact.OrderHistoryExtended;
|
||||
GO
|
||||
|
||||
/*
|
||||
Make this table bigger (exec as desired)
|
||||
Notice the "GO 3"
|
||||
*/
|
||||
INSERT Fact.OrderHistoryExtended([City Key], [Customer Key], [Stock Item Key], [Order Date Key], [Picked Date Key], [Salesperson Key], [Picker Key], [WWI Order ID], [WWI Backorder ID], Description, Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Total Including Tax], [Lineage Key])
|
||||
SELECT [City Key], [Customer Key], [Stock Item Key], [Order Date Key], [Picked Date Key], [Salesperson Key], [Picker Key], [WWI Order ID], [WWI Backorder ID], Description, Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Total Including Tax], [Lineage Key]
|
||||
FROM Fact.OrderHistoryExtended;
|
||||
GO 3
|
||||
|
||||
/*
|
||||
Should be 29,620,736
|
||||
*/
|
||||
SELECT COUNT(*) FROM Fact.OrderHistoryExtended;
|
||||
GO
|
||||
|
||||
UPDATE Fact.OrderHistoryExtended
|
||||
SET [WWI Order ID] = [Order Key];
|
||||
GO
|
||||
|
||||
-- Repeat until log shrinks
|
||||
CHECKPOINT
|
||||
GO
|
||||
DBCC SHRINKFILE (N'WWI_Log' , 0, TRUNCATEONLY)
|
||||
-- ***************************************************** --
|
||||
-- Purpose of this script: make WideWorldImportersDW
|
||||
-- bigger - so you can see more impactful
|
||||
-- Intelligent QP demonstrations (aka.ms/iqp)
|
||||
--
|
||||
-- Script last updated 05/03/2019
|
||||
--
|
||||
-- Database backup source: aka.ms/wwibak
|
||||
--
|
||||
-- Initial database file to restore before beginning this script:
|
||||
-- WideWorldImportersDW-Full.bak
|
||||
-- ***************************************************** --
|
||||
|
||||
USE WideWorldImportersDW;
|
||||
GO
|
||||
|
||||
/*
|
||||
Assumes a fresh restore of WideWorldImportersDW
|
||||
*/
|
||||
|
||||
IF OBJECT_ID('Fact.OrderHistory') IS NULL BEGIN
|
||||
SELECT [Order Key], [City Key], [Customer Key], [Stock Item Key], [Order Date Key], [Picked Date Key], [Salesperson Key], [Picker Key], [WWI Order ID], [WWI Backorder ID], Description, Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Total Including Tax], [Lineage Key]
|
||||
INTO Fact.OrderHistory
|
||||
FROM Fact.[Order];
|
||||
END;
|
||||
|
||||
ALTER TABLE Fact.OrderHistory
|
||||
ADD CONSTRAINT PK_Fact_OrderHistory PRIMARY KEY NONCLUSTERED([Order Key] ASC, [Order Date Key] ASC)WITH(DATA_COMPRESSION=PAGE);
|
||||
GO
|
||||
|
||||
CREATE INDEX IX_Stock_Item_Key
|
||||
ON Fact.OrderHistory([Stock Item Key])
|
||||
INCLUDE(Quantity)
|
||||
WITH(DATA_COMPRESSION=PAGE);
|
||||
GO
|
||||
|
||||
CREATE INDEX IX_OrderHistory_Quantity
|
||||
ON Fact.OrderHistory([Quantity])
|
||||
INCLUDE([Order Key])
|
||||
WITH(DATA_COMPRESSION=PAGE);
|
||||
GO
|
||||
|
||||
/*
|
||||
Reality check... Starting count should be 231,412
|
||||
*/
|
||||
SELECT COUNT(*) FROM Fact.OrderHistory;
|
||||
GO
|
||||
|
||||
/*
|
||||
Make this table bigger (exec as desired)
|
||||
Notice the "GO 4"
|
||||
*/
|
||||
INSERT Fact.OrderHistory([City Key], [Customer Key], [Stock Item Key], [Order Date Key], [Picked Date Key], [Salesperson Key], [Picker Key], [WWI Order ID], [WWI Backorder ID], Description, Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Total Including Tax], [Lineage Key])
|
||||
SELECT [City Key], [Customer Key], [Stock Item Key], [Order Date Key], [Picked Date Key], [Salesperson Key], [Picker Key], [WWI Order ID], [WWI Backorder ID], Description, Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Total Including Tax], [Lineage Key]
|
||||
FROM Fact.OrderHistory;
|
||||
GO 4
|
||||
|
||||
/*
|
||||
Should be 3,702,592
|
||||
*/
|
||||
SELECT COUNT(*) FROM Fact.OrderHistory;
|
||||
GO
|
||||
|
||||
IF OBJECT_ID('Fact.OrderHistoryExtended') IS NULL BEGIN
|
||||
SELECT [Order Key], [City Key], [Customer Key], [Stock Item Key], [Order Date Key], [Picked Date Key], [Salesperson Key], [Picker Key], [WWI Order ID], [WWI Backorder ID], Description, Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Total Including Tax], [Lineage Key]
|
||||
INTO Fact.OrderHistoryExtended
|
||||
FROM Fact.[OrderHistory];
|
||||
END;
|
||||
|
||||
ALTER TABLE Fact.OrderHistoryExtended
|
||||
ADD CONSTRAINT PK_Fact_OrderHistoryExtended PRIMARY KEY NONCLUSTERED([Order Key] ASC, [Order Date Key] ASC)
|
||||
WITH(DATA_COMPRESSION=PAGE);
|
||||
GO
|
||||
|
||||
CREATE INDEX IX_Stock_Item_Key
|
||||
ON Fact.OrderHistoryExtended([Stock Item Key])
|
||||
INCLUDE(Quantity);
|
||||
GO
|
||||
|
||||
/*
|
||||
Should be 3,702,592
|
||||
*/
|
||||
SELECT COUNT(*) FROM Fact.OrderHistoryExtended;
|
||||
GO
|
||||
|
||||
/*
|
||||
Make this table bigger (exec as desired)
|
||||
Notice the "GO 3"
|
||||
*/
|
||||
INSERT Fact.OrderHistoryExtended([City Key], [Customer Key], [Stock Item Key], [Order Date Key], [Picked Date Key], [Salesperson Key], [Picker Key], [WWI Order ID], [WWI Backorder ID], Description, Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Total Including Tax], [Lineage Key])
|
||||
SELECT [City Key], [Customer Key], [Stock Item Key], [Order Date Key], [Picked Date Key], [Salesperson Key], [Picker Key], [WWI Order ID], [WWI Backorder ID], Description, Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Total Including Tax], [Lineage Key]
|
||||
FROM Fact.OrderHistoryExtended;
|
||||
GO 3
|
||||
|
||||
/*
|
||||
Should be 29,620,736
|
||||
*/
|
||||
SELECT COUNT(*) FROM Fact.OrderHistoryExtended;
|
||||
GO
|
||||
|
||||
UPDATE Fact.OrderHistoryExtended
|
||||
SET [WWI Order ID] = [Order Key];
|
||||
GO
|
||||
|
||||
-- Repeat until log shrinks
|
||||
CHECKPOINT
|
||||
GO
|
||||
DBCC SHRINKFILE (N'WWI_Log' , 0, TRUNCATEONLY)
|
||||
GO
|
||||
+9
-9
@@ -17,7 +17,7 @@
|
||||
USE [WideWorldImportersDW];
|
||||
GO
|
||||
|
||||
CREATE FUNCTION [Fact].[WhatIfOutlierEventQuantity](@event VARCHAR(15), @beginOrderDateKey DATE, @endOrderDateKey DATE)
|
||||
CREATE OR ALTER FUNCTION [Fact].[ufn_WhatIfOutlierEventQuantity](@event VARCHAR(15), @beginOrderDateKey DATE, @endOrderDateKey DATE)
|
||||
RETURNS @OutlierEventQuantity TABLE (
|
||||
[Order Key] [bigint],
|
||||
[City Key] [int] NOT NULL,
|
||||
@@ -122,10 +122,10 @@ GO
|
||||
USE [WideWorldImportersDW];
|
||||
GO
|
||||
|
||||
SELECT [fo].[Order Key], [fo].[Description], [fo].[Package],
|
||||
SELECT [fo].[Order Key], [fo].[Description], [fo].[Package],
|
||||
[fo].[Quantity], [foo].[OutlierEventQuantity]
|
||||
FROM [Fact].[Order] AS [fo]
|
||||
INNER JOIN [Fact].[WhatIfOutlierEventQuantity]('Mild Recession',
|
||||
FROM [Fact].[Order] AS [fo]
|
||||
INNER JOIN [Fact].[ufn_WhatIfOutlierEventQuantity]('Mild Recession',
|
||||
'1-01-2013',
|
||||
'10-15-2014') AS [foo] ON [fo].[Order Key] = [foo].[Order Key]
|
||||
AND [fo].[City Key] = [foo].[City Key]
|
||||
@@ -137,7 +137,7 @@ INNER JOIN [Fact].[WhatIfOutlierEventQuantity]('Mild Recession',
|
||||
AND [fo].[Picker Key] = [foo].[Picker Key]
|
||||
INNER JOIN [Dimension].[Stock Item] AS [si]
|
||||
ON [fo].[Stock Item Key] = [si].[Stock Item Key]
|
||||
WHERE [si].[Lead Time Days] > 0
|
||||
WHERE [si].[Lead Time Days] > 0
|
||||
AND [fo].[Quantity] > 50;
|
||||
GO
|
||||
|
||||
@@ -153,10 +153,10 @@ GO
|
||||
USE [WideWorldImportersDW];
|
||||
GO
|
||||
|
||||
SELECT [fo].[Order Key], [fo].[Description], [fo].[Package],
|
||||
SELECT [fo].[Order Key], [fo].[Description], [fo].[Package],
|
||||
[fo].[Quantity], [foo].[OutlierEventQuantity]
|
||||
FROM [Fact].[Order] AS [fo]
|
||||
INNER JOIN [Fact].[WhatIfOutlierEventQuantity]('Mild Recession',
|
||||
FROM [Fact].[Order] AS [fo]
|
||||
INNER JOIN [Fact].[ufn_WhatIfOutlierEventQuantity]('Mild Recession',
|
||||
'1-01-2013',
|
||||
'10-15-2014') AS [foo] ON [fo].[Order Key] = [foo].[Order Key]
|
||||
AND [fo].[City Key] = [foo].[City Key]
|
||||
@@ -168,6 +168,6 @@ INNER JOIN [Fact].[WhatIfOutlierEventQuantity]('Mild Recession',
|
||||
AND [fo].[Picker Key] = [foo].[Picker Key]
|
||||
INNER JOIN [Dimension].[Stock Item] AS [si]
|
||||
ON [fo].[Stock Item Key] = [si].[Stock Item Key]
|
||||
WHERE [si].[Lead Time Days] > 0
|
||||
WHERE [si].[Lead Time Days] > 0
|
||||
AND [fo].[Quantity] > 50;
|
||||
GO
|
||||
|
||||
+71
-72
@@ -1,72 +1,71 @@
|
||||
-- ******************************************************** --
|
||||
-- Scalar UDF Inlining
|
||||
|
||||
-- See https://aka.ms/IQP for more background
|
||||
|
||||
-- Demo scripts: https://aka.ms/IQPDemos
|
||||
|
||||
-- Demo uses SQL Server 2019 Public Preview and also works on Azure SQL DB
|
||||
|
||||
-- Email IntelligentQP@microsoft.com for questions\feedback
|
||||
-- ******************************************************** --
|
||||
USE [master];
|
||||
GO
|
||||
|
||||
ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 150;
|
||||
GO
|
||||
|
||||
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
|
||||
GO
|
||||
|
||||
USE [WideWorldImportersDW];
|
||||
GO
|
||||
|
||||
/*
|
||||
Adapted from SQL Server Books Online
|
||||
https://docs.microsoft.com/sql/relational-databases/user-defined-functions/scalar-udf-inlining?view=sqlallproducts-allversions
|
||||
*/
|
||||
CREATE OR ALTER FUNCTION
|
||||
dbo.ufn_customer_category(@CustomerKey INT)
|
||||
RETURNS CHAR(10) AS
|
||||
BEGIN
|
||||
DECLARE @total_amount DECIMAL(18,2);
|
||||
DECLARE @category CHAR(10);
|
||||
|
||||
SELECT @total_amount =
|
||||
SUM([Total Including Tax])
|
||||
FROM [Fact].[OrderHistory]
|
||||
WHERE [Customer Key] = @CustomerKey;
|
||||
|
||||
IF @total_amount < 500000
|
||||
SET @category = 'REGULAR';
|
||||
ELSE IF @total_amount < 1000000
|
||||
SET @category = 'GOLD';
|
||||
ELSE
|
||||
SET @category = 'PLATINUM';
|
||||
|
||||
RETURN @category;
|
||||
END
|
||||
GO
|
||||
|
||||
SELECT * FROM sys.sql_modules
|
||||
WHERE object_id = OBJECT_ID('ufn_customer_category')
|
||||
GO
|
||||
|
||||
-- Before (show actual query execution plan for legacy behavior)
|
||||
SELECT TOP 100
|
||||
[Customer Key], [Customer],
|
||||
dbo.ufn_customer_category([Customer Key]) AS [Discount Price]
|
||||
FROM [Dimension].[Customer]
|
||||
ORDER BY [Customer Key]
|
||||
OPTION (RECOMPILE,USE HINT('DISABLE_TSQL_SCALAR_UDF_INLINING'));
|
||||
GO
|
||||
|
||||
-- After (show actual query execution plan for Scalar UDF Inlining)
|
||||
SELECT TOP 100
|
||||
[Customer Key], [Customer],
|
||||
dbo.ufn_customer_category([Customer Key]) AS [Discount Price]
|
||||
FROM [Dimension].[Customer]
|
||||
ORDER BY [Customer Key]
|
||||
OPTION (RECOMPILE);
|
||||
GO
|
||||
|
||||
-- ******************************************************** --
|
||||
-- Scalar UDF Inlining
|
||||
|
||||
-- See https://aka.ms/IQP for more background
|
||||
|
||||
-- Demo scripts: https://aka.ms/IQPDemos
|
||||
|
||||
-- Demo uses SQL Server 2019 Public Preview and also works on Azure SQL DB
|
||||
|
||||
-- Email IntelligentQP@microsoft.com for questions\feedback
|
||||
-- ******************************************************** --
|
||||
USE [master];
|
||||
GO
|
||||
|
||||
ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 150;
|
||||
GO
|
||||
|
||||
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
|
||||
GO
|
||||
|
||||
USE [WideWorldImportersDW];
|
||||
GO
|
||||
|
||||
/*
|
||||
Adapted from SQL Server Books Online
|
||||
https://docs.microsoft.com/sql/relational-databases/user-defined-functions/scalar-udf-inlining?view=sqlallproducts-allversions
|
||||
*/
|
||||
CREATE OR ALTER FUNCTION
|
||||
dbo.ufn_customer_category(@CustomerKey INT)
|
||||
RETURNS CHAR(10) AS
|
||||
BEGIN
|
||||
DECLARE @total_amount DECIMAL(18,2);
|
||||
DECLARE @category CHAR(10);
|
||||
|
||||
SELECT @total_amount =
|
||||
SUM([Total Including Tax])
|
||||
FROM [Fact].[OrderHistory]
|
||||
WHERE [Customer Key] = @CustomerKey;
|
||||
|
||||
IF @total_amount < 500000
|
||||
SET @category = 'REGULAR';
|
||||
ELSE IF @total_amount < 1000000
|
||||
SET @category = 'GOLD';
|
||||
ELSE
|
||||
SET @category = 'PLATINUM';
|
||||
|
||||
RETURN @category;
|
||||
END
|
||||
GO
|
||||
|
||||
SELECT * FROM sys.sql_modules
|
||||
WHERE object_id = OBJECT_ID('ufn_customer_category')
|
||||
GO
|
||||
|
||||
-- Before (show actual query execution plan for legacy behavior)
|
||||
SELECT TOP 100
|
||||
[Customer Key], [Customer],
|
||||
dbo.ufn_customer_category([Customer Key]) AS [Discount Price]
|
||||
FROM [Dimension].[Customer]
|
||||
ORDER BY [Customer Key]
|
||||
OPTION (RECOMPILE,USE HINT('DISABLE_TSQL_SCALAR_UDF_INLINING'));
|
||||
GO
|
||||
|
||||
-- After (show actual query execution plan for Scalar UDF Inlining)
|
||||
SELECT TOP 100
|
||||
[Customer Key], [Customer],
|
||||
dbo.ufn_customer_category([Customer Key]) AS [Discount Price]
|
||||
FROM [Dimension].[Customer]
|
||||
ORDER BY [Customer Key]
|
||||
OPTION (RECOMPILE);
|
||||
GO
|
||||
|
||||
+72
-73
@@ -1,73 +1,72 @@
|
||||
-- ******************************************************** --
|
||||
-- Table variable deferred compilation
|
||||
|
||||
-- See https://aka.ms/IQP for more background
|
||||
|
||||
-- Demo scripts: https://aka.ms/IQPDemos
|
||||
|
||||
-- This demo is on SQL Server 2019 Public Preview and works in Azure SQL DB too
|
||||
|
||||
-- Email IntelligentQP@microsoft.com for questions\feedback
|
||||
-- ******************************************************** --
|
||||
|
||||
USE [master];
|
||||
GO
|
||||
|
||||
ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 140;
|
||||
GO
|
||||
|
||||
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
|
||||
GO
|
||||
|
||||
USE [WideWorldImportersDW];
|
||||
GO
|
||||
|
||||
DECLARE @Order TABLE
|
||||
([Order Key] BIGINT NOT NULL,
|
||||
[Quantity] INT NOT NULL
|
||||
);
|
||||
|
||||
INSERT @Order
|
||||
SELECT [Order Key], [Quantity]
|
||||
FROM [Fact].[OrderHistory]
|
||||
WHERE [Quantity] > 99;
|
||||
|
||||
-- Look at estimated rows, speed, join algorithm
|
||||
SELECT oh.[Order Key], oh.[Order Date Key],
|
||||
oh.[Unit Price], o.Quantity
|
||||
FROM Fact.OrderHistoryExtended AS oh
|
||||
INNER JOIN @Order AS o
|
||||
ON o.[Order Key] = oh.[Order Key]
|
||||
WHERE oh.[Unit Price] > 0.10
|
||||
ORDER BY oh.[Unit Price] DESC;
|
||||
GO
|
||||
|
||||
USE [master]
|
||||
GO
|
||||
|
||||
ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 150
|
||||
GO
|
||||
|
||||
USE [WideWorldImportersDW]
|
||||
GO
|
||||
|
||||
DECLARE @Order TABLE
|
||||
([Order Key] BIGINT NOT NULL,
|
||||
[Quantity] INT NOT NULL
|
||||
);
|
||||
|
||||
INSERT @Order
|
||||
SELECT [Order Key], [Quantity]
|
||||
FROM [Fact].[OrderHistory]
|
||||
WHERE [Quantity] > 99;
|
||||
|
||||
-- Look at estimated rows, speed, join algorithm
|
||||
SELECT oh.[Order Key], oh.[Order Date Key],
|
||||
oh.[Unit Price], o.Quantity
|
||||
FROM Fact.OrderHistoryExtended AS oh
|
||||
INNER JOIN @Order AS o
|
||||
ON o.[Order Key] = oh.[Order Key]
|
||||
WHERE oh.[Unit Price] > 0.10
|
||||
ORDER BY oh.[Unit Price] DESC;
|
||||
GO
|
||||
|
||||
-- ******************************************************** --
|
||||
-- Table variable deferred compilation
|
||||
|
||||
-- See https://aka.ms/IQP for more background
|
||||
|
||||
-- Demo scripts: https://aka.ms/IQPDemos
|
||||
|
||||
-- This demo is on SQL Server 2019 Public Preview and works in Azure SQL DB too
|
||||
|
||||
-- Email IntelligentQP@microsoft.com for questions\feedback
|
||||
-- ******************************************************** --
|
||||
|
||||
USE [master];
|
||||
GO
|
||||
|
||||
ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 140;
|
||||
GO
|
||||
|
||||
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
|
||||
GO
|
||||
|
||||
USE [WideWorldImportersDW];
|
||||
GO
|
||||
|
||||
DECLARE @Order TABLE
|
||||
([Order Key] BIGINT NOT NULL,
|
||||
[Quantity] INT NOT NULL
|
||||
);
|
||||
|
||||
INSERT @Order
|
||||
SELECT [Order Key], [Quantity]
|
||||
FROM [Fact].[OrderHistory]
|
||||
WHERE [Quantity] > 99;
|
||||
|
||||
-- Look at estimated rows, speed, join algorithm
|
||||
SELECT oh.[Order Key], oh.[Order Date Key],
|
||||
oh.[Unit Price], o.Quantity
|
||||
FROM Fact.OrderHistoryExtended AS oh
|
||||
INNER JOIN @Order AS o
|
||||
ON o.[Order Key] = oh.[Order Key]
|
||||
WHERE oh.[Unit Price] > 0.10
|
||||
ORDER BY oh.[Unit Price] DESC;
|
||||
GO
|
||||
|
||||
USE [master]
|
||||
GO
|
||||
|
||||
ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 150
|
||||
GO
|
||||
|
||||
USE [WideWorldImportersDW]
|
||||
GO
|
||||
|
||||
DECLARE @Order TABLE
|
||||
([Order Key] BIGINT NOT NULL,
|
||||
[Quantity] INT NOT NULL
|
||||
);
|
||||
|
||||
INSERT @Order
|
||||
SELECT [Order Key], [Quantity]
|
||||
FROM [Fact].[OrderHistory]
|
||||
WHERE [Quantity] > 99;
|
||||
|
||||
-- Look at estimated rows, speed, join algorithm
|
||||
SELECT oh.[Order Key], oh.[Order Date Key],
|
||||
oh.[Unit Price], o.Quantity
|
||||
FROM Fact.OrderHistoryExtended AS oh
|
||||
INNER JOIN @Order AS o
|
||||
ON o.[Order Key] = oh.[Order Key]
|
||||
WHERE oh.[Unit Price] > 0.10
|
||||
ORDER BY oh.[Unit Price] DESC;
|
||||
GO
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# SQL Server 2008/2008R2 Extended Security Updates
|
||||
If you’re running SQL Server 2008 or 2008 R2, these versions are reaching the end of their support lifecycle on July 9, 2019.
|
||||
Each version is backed by a minimum of 10 years of support (5 years for Mainstream Support and 5 years for Extended Support) including regular security updates.
|
||||
End of support means the end of security updates, which can cause security and compliance issues and put applications and business at risk.
|
||||
We recommend upgrading to current versions for the most advanced security, performance, and innovation.
|
||||
For customers that can’t get it all upgraded by the deadline, new options help protect applications and data during the upgrade transition:
|
||||
- Migrate your existing SQL Server 2008 and 2008R2 workloads as-is to Azure and receive additional 3 years of free Extended Security Updates (if and when available)
|
||||
- Purchase Extended Security Updates for your servers and remain protected for up to 3 years until you are ready to upgrade to a newer SQL Server version
|
||||
|
||||
## Useful links
|
||||
[SQL Server 2008/2008R2 end of support page](https://aka.ms/sqleos)
|
||||
[Extended Security Updates frequently asked questions](https://aka.ms/sqleosfaq)
|
||||
|
||||
## How to register a single SQL Server instance to download Extended Security Updates
|
||||
Coming soon...
|
||||
|
||||
## How to bulk register SQL Server instances to download Extended Security Updates
|
||||
Coming soon...
|
||||
Reference in New Issue
Block a user