Você está na página 1de 2

Arquivo txt vazio 03

Exemplo de código de sintaxe


Esta subseção contém um bloco de códigos Transact-SQL que demonstra a sintaxe para
criar vários índices em uma tabela com otimização de memória. O código demonstra o
seguinte:

Crie uma tabela com otimização de memória.

Use as instruções ALTER TABLE para adicionar dois índices.

Insira algumas linhas de dados.

SQL

Copiar
DROP TABLE IF EXISTS SupportEvent;
go

CREATE TABLE SupportEvent


(
SupportEventId int not null identity(1,1)
PRIMARY KEY NONCLUSTERED,

StartDateTime datetime2 not null,


CustomerName nvarchar(16) not null,
SupportEngineerName nvarchar(16) null,
Priority int null,
Description nvarchar(64) null
)
WITH (
MEMORY_OPTIMIZED = ON,
DURABILITY = SCHEMA_AND_DATA);
go

--------------------

ALTER TABLE SupportEvent


ADD CONSTRAINT constraintUnique_SDT_CN
UNIQUE NONCLUSTERED (StartDateTime DESC, CustomerName);
go

ALTER TABLE SupportEvent


ADD INDEX idx_hash_SupportEngineerName
HASH (SupportEngineerName) WITH (BUCKET_COUNT = 64); -- Nonunique.
go

--------------------

INSERT INTO SupportEvent


(StartDateTime, CustomerName, SupportEngineerName, Priority, Description)
VALUES
('2016-02-23 13:40:41:123', 'Abby', 'Zeke', 2, 'Display problem.' ),
('2016-02-24 13:40:41:323', 'Ben' , null , 1, 'Cannot find help.' ),
('2016-02-25 13:40:41:523', 'Carl', 'Liz' , 2, 'Button is gray.' ),
('2016-02-26 13:40:41:723', 'Dave', 'Zeke', 2, 'Cannot unhide column.');
go
Valores de chave de índice duplicados
Valores duplicados para uma chave de índice podem reduzir o desempenho de tabelas
com otimização de memória. Duplicatas para o sistema percorrer as cadeias de
entrada para a maioria das operações de leitura e gravação do índice. Quando uma
cadeia de entradas duplicadas excede 100 entradas, a degradação do desempenho pode
se tornar mensurável.

Valores de hash duplicados


Esse problema é mais visível no caso de índices de hash. Índices de hash sofrem
mais devido às considerações a seguir:

Menor custo por operação de índices de hash.


A interferência de grandes cadeias duplicadas na cadeia de colisão de hash.
Para reduzir a duplicação em um índice, tente realizar os seguintes ajustes:

Usar um índice não clusterizado.


Adicionar colunas adicionais ao final da chave de índice para reduzir o número de
duplicatas.
Por exemplo, você pode adicionar colunas que também estão na chave primária.
Para obter mais informações sobre colisões de hash, consulte Índices de hash para
tabelas com otimização de memória.

Exemplo de aperfeiçoamento
Aqui está um exemplo de como evitar qualquer ineficiência de desempenho em seu
índice.

Considere uma tabela Customers que tenha uma chave primária em CustomerId e um
índice na coluna CustomerCategoryID. Normalmente, haverá muitos clientes em uma
determinada categoria. Portanto, haverá muitos valores duplicados para
CustomerCategoryID dentro de uma determinada chave do índice.

Nesse cenário, a melhor prática é usar um índice não clusterizado em


(CustomerCategoryID, CustomerId). Esse índice pode ser usado para consultas que
usam um predicado que envolve CustomerCategoryID, mas a chave de índice não contém
duplicação. Portanto, nenhuma ineficiência na manutenção do índice é causada pelos
valores CustomerCategoryID duplicados nem pela coluna extra no índice.

A consulta a seguir mostra o número médio de valores de chave de índice duplicado


para o índice em CustomerCategoryID na tabela Sales.Customers, no banco de dados de
exemplo WideWorldImporters.

Você também pode gostar