--Aula 01 - Limpa o Buffer Cache
--Limpa o BUFFER CACHE
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
GO
--Aula 02 - Query
USE DB6232
GO
SELECT * FROM amigos
WHERE nome_amigo = 'Marina'
SELECT nome_amigo FROM amigos
WHERE nome_amigo = 'Marina'
--Aula 03 - FILTERED INDEX
USE DB6232
GO
--Verificando o número de registros nos índices
SELECT name, i.index_id, [rows]
FROM SYS.PARTITIONS p INNER JOIN SYS.INDEXES i
ON p.[object_id] = i.[object_id]
AND p.index_id = i.index_id
WHERE p.[object_id] = OBJECT_ID('dbo.amigos')
GO
--Criando FILTERED INDEX (SQL SERVER 2008)
CREATE NONCLUSTERED INDEX IX_amigos_sexo_amigo_F
ON amigos (sexo_amigo)
INCLUDE (nome_amigo)
WHERE sexo_amigo = 'F'
GO
CREATE NONCLUSTERED INDEX IX_amigos_sexo_amigo_M
ON amigos (sexo_amigo)
INCLUDE (nome_amigo)
WHERE sexo_amigo = 'M'
GO
SELECT nome_amigo FROM amigos
WHERE sexo_amigo = 'F' AND nome_amigo = 'Marina'
--Estimated Subtree Cost ->
SELECT nome_amigo FROM amigos
WHERE sexo_amigo = 'M' AND nome_amigo = 'Pedro'
--Estimated Subtree Cost ->
--Aula 05 - Usando o FILLFACTOR
--Usando o FILLFACTOR
USE DB6232
GO
--Criando índice CLUSTERED na coluna cod_amigo
--com FILLFACTOR = 90
CREATE CLUSTERED INDEX IXC_amigos_cod_amigo
ON amigos (cod_amigo)
WITH (FILLFACTOR = 90)
--Criando índice NONCLUSTERED na coluna nome_amigo
--com FILLFACTOR = 90
CREATE NONCLUSTERED INDEX IX_amigos_nome_amigo
ON amigos (nome_amigo)
WITH (FILLFACTOR = 90)
SELECT nome_amigo FROM amigos
WHERE nome_amigo = 'Marina'
--Aula 06 - Reorganize e Rebuild Indices
--Otimizando índices
USE DB6232
GO
DBCC SHOWCONTIG ('dbo.amigos', 3)
DBCC SHOWCONTIG ('dbo.amigos', 1) WITH FAST
GO
--Reorganizando os índices
ALTER INDEX IX_amigos_nome_amigo
ON [dbo].[amigos] REORGANIZE
GO
--Reconstruíndo os índices
ALTER INDEX [IX_amigos_nome_amigo]
ON [dbo].[amigos] REBUILD
GO
-- Aula 07 - Query Retorna Info Sobre Index
--Número de registros na tabela
--Número de páginas de dados
--Número de registros por página de dados
SELECT OBJECT_NAME(i.OBJECT_ID) AS [Tabela],
i.name AS [Índice],
i.type_desc AS [Tipo],
SUM(p.ROWS) AS [Registros],
SUM(au.data_pages) AS [# Páginas],
SUM(p.ROWS) / SUM(au.data_pages) AS [# Registros Por Página]
FROM sys.indexes AS i INNER JOIN sys.partitions AS p
ON i.OBJECT_ID = p.OBJECT_ID
AND i.index_id = p.index_id INNER JOIN sys.allocation_units AS au
ON p.hobt_id = au.container_id
WHERE OBJECT_NAME(i.OBJECT_ID) NOT LIKE 'sys%'
AND au.type_desc = 'IN_ROW_DATA'
GROUP BY OBJECT_NAME(i.OBJECT_ID), i.name, i.type_desc
HAVING SUM(au.data_pages) > 0
ORDER BY 6
--Minha Query
SELECT ob.name,
ps.index_id,
ps.in_row_data_page_count,
ps.used_page_count,
ps.row_count
FROM sys.dm_db_partition_stats ps
INNER JOIN sys.objects ob
ON ps.object_id = ob.object_id
WHERE type = 'U'
--Aula 08 - Buffer Cache
--Verificando o funcionamento do BUFFER CACHE
--utilizando o Performance Monitor com o counter a seguir
--SQLServer:Buffer Manager
--Database pages
--Descrição: Number of pages in the buffer pool with database content.
SELECT * FROM [Sales].[SalesOrderDetail]
SELECT * FROM [Production].[TransactionHistory]
SELECT * FROM [Production].[TransactionHistoryArchive]
SELECT * FROM [Production].[WorkOrder]
SELECT * FROM [Production].[WorkOrderRouting]
Nenhum comentário:
Postar um comentário