Overlaping de dados – QO

O Query optimizer (QO) vem evoluindo ao londo dos anos e das versões do SQL Server. Dentre algumas melhorias feitas esta a identificação de Overlaping de valores.

O que é o OverLaping?
Overlaping ocorre quando em um predicado de uma query há sobreposição de valores.

Exemplo:
001_Overlaping

No QO é possivel visualizar pelo plano de execução da query que tal situação é tratada pelo SQL Server criando apenas um Seek Predicate, conforme imagem abaixo:
002_Overlaping

Abaixo o script utilizado para a demonstração:

USE tempdb
GO

IF(EXISTS(SELECT TOP 1 1 FROM sys.tables WHERE name LIKE 'DemonstracaoQO'))
	DROP TABLE DemonstracaoQO

CREATE TABLE DemonstracaoQO
(
	Numero BIGINT
)
GO

INSERT INTO DemonstracaoQO(Numero)
SELECT (CHECKSUM(NEWID()))/10000000
GO 100

SELECT MIN(Numero) As Minimo, MAX(Numero) As Maximo
FROM DemonstracaoQO
GO

SELECT Numero
FROM DemonstracaoQO
WHERE
	Numero BETWEEN -206 AND 100 --Menor valor AND algum numero no meio entre menor e maior
	OR Numero BETWEEN 50 AND 208 -- Algum numero entre os 2 do between acima e o maior valor

Então podemos afirmar que o Query Optimizer é inteligente o sulficiente para identificar sobreposição de predicados e reduzilos ao maximo melhorando assim a performance de sua consulta, aonde no exemplo acima duas condições foram transformadas em apenas uma.

Anúncios
Post a comment or leave a trackback: Trackback URL.

Comentários

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: