Files
sql-server-samples/samples/features/query-store/ShowBasics.sql
T
2019-04-20 20:57:53 -07:00

97 lines
2.3 KiB
Transact-SQL

/*Clear Query Store and procedure cache*/
ALTER DATABASE AdventureWorks2016_EXT SET QUERY_STORE CLEAR;
ALTER DATABASE AdventureWorks2016_EXT SET QUERY_STORE = ON (QUERY_CAPTURE_MODE = ALL);
DBCC FREEPROCCACHE
GO
USE AdventureWorks2016_EXT;
GO
/*Run simple query - what data is collected and where does it go to?*/
SELECT * FROM Part;
SELECT * FROM sys.query_store_query_text;
SELECT * FROM sys.query_store_query;
SELECT * FROM sys.query_store_plan;
SELECT * FROM sys.query_store_runtime_stats;
/*
Combine all info
vw_QueryStoreCompileInfo is custom view (created for presentation)
*/
SELECT * FROM vw_QueryStoreCompileInfo
WHERE query_sql_text = 'SELECT * FROM Part'
/*The same query from the proc*/
DROP PROCEDURE IF EXISTS sp_GetParts
GO
CREATE PROCEDURE sp_GetParts
AS
SELECT * FROM Part;
GO
EXEC sp_GetParts;
/*Again the same query, from sp_executesql*/
EXEC sp_executesql N'SELECT * FROM Part'
SELECT * FROM vw_QueryStoreCompileInfo
WHERE query_sql_text = 'SELECT * FROM Part'
/*Finally trigger*/
DROP TRIGGER IF EXISTS dbo.OnPartInsert
GO
CREATE TRIGGER dbo.OnPartInsert
ON dbo.Part
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT * FROM Part;
END
GO
INSERT INTO Part VALUES (3000020, 'Part_300020');
SELECT * FROM vw_QueryStoreCompileInfo
WHERE query_sql_text = 'SELECT * FROM Part'
/*What happens with parametrized query?*/
SELECT * FROM Part WHERE PartId = 5;
SELECT * FROM vw_QueryStoreCompileInfo
WHERE query_sql_text = 'SELECT * FROM Part = 5'
/* Check sys.query_store_query_text */
SELECT * FROM sys.query_store_query_text;
/*Try sys.fn_stmt_sql_handle_from_sql_stmt this instead*/
SELECT * FROM sys.fn_stmt_sql_handle_from_sql_stmt
('SELECT * FROM Part WHERE PartId = 5', NULL)
/*Changed searched criteria*/
SELECT V.* FROM vw_QueryStoreCompileInfo V
JOIN sys.fn_stmt_sql_handle_from_sql_stmt
('SELECT * FROM Part WHERE PartId = 5', NULL) F
ON V.statement_sql_handle = F.statement_sql_handle
/*Get runtime info for the queries*/
SELECT * FROM vw_QueryStoreRuntimeInfo
WHERE query_sql_text = 'SELECT * FROM Part'
ORDER BY start_time DESC
SELECT * FROM vw_QueryStoreRuntimeInfo V
JOIN sys.fn_stmt_sql_handle_from_sql_stmt
('SELECT * FROM Part WHERE PartId = 5', NULL) F
ON V.statement_sql_handle = F.statement_sql_handle
ORDER BY start_time DESC