Join Hints

Os hints de joins são utilizados para forçar uma otimização entre tabelas, de maneira geral o Query Optimizer seleciona o melhor plano de execução, contudo algumas vezes necessitamos de alguns artefatos específicos para tratar algum caso especial.

O SQL Server nos dá três tipos de hints para joins, são eles:

· Merge: O merge join é muito rápido quando utilizado entre colunas ordenadas, isso porque esse operador força o optimizer a comparar as tuplas em ordem da coluna “C1” para a coluna “C2”.

· Loop: O nested loop é um laço interno que é executado a cada tupla externa, procurando linhas correspondentes na tabela interna.

· Hash: muito utilizado em datawarehouses, esse join hint trabalha bem com grande quantidade de dados, uma vez que o processamento inicia com a carga dos dados na memória. O funcionamento do Hash join é similar ao merge, porém sem a necessidade de índice ou ordenação.

Abaixo segue alguns links para mais informações sobre o assunto.

http://msdn.microsoft.com/en-us/library/ms173815(v=SQL.105).aspx

http://www.mssqlcity.com/Articles/General/MergeJoins.htm

Abraço, Rodrigo

Criando objetos no PowerShell

Criar objetos no PowerShell é muito simples, devemos definir a variável e atribuir a condição New-Object

$o = New-Object object

A partir deste momento já possuiremos o objeto $o, um objeto pode ser composto de propriedades. Por exemplo, o objeto pessoa possui as propriedades altura, peso e nome.

$pessoa = New-Object object

Add-Member -MemberType NoteProperty -Name Nome -Value “” -InputObject $pessoa

Add-Member -MemberType NoteProperty -Name Sobrenome -value “” -InputObject $pessoa

Add-Member -membertype NoteProperty -Name Titulacao -Value “” -InputObject $pessoa

A atribuição de valores é utilizando a sintaxe objeto.propriedade=valor veja abaixo:

$pessoa.Nome = “Rodrigo”

$pessoa.Sobrenome = “Crespi”

$pessoa.Titulacao = “Especialista”

A consequência dessa atribuição é o você desejar receber de volta os valores, para isso basta invocar o objeto.propriedade e ainda podemos utilizar os complementos de formatação.

$pessoa.Nome

$pessoa.Nome.ToUpper()

Métodos

No nosso exemplo do objeto pessoa, podemos criar os métodos cumprimentar e o despedir. Onde o “Cumprimentar” deve imprimir na tela “Olá” e despedir “Adeus”.

Add-Member -MemberType ScriptMethod -InputObject $pessoa -Name Cumprimento -value {“Olá”}

Add-Member -MemberType ScriptMethod -InputObject $pessoa -Name Despedir -value {“Adeus”}

 

$pessoa.cumprimento()

Abraço, Rodrigo

Evento da comunidade MCITPSC

Pessoal,

Divulgando o primeiro organizado pela comunidade MCITP de Santa Catarina.

Data 26/03/2011

Horário: 08:00 – 12:00

Grade/Temas:

08:00 – 08:30 Credenciamento

08:30 – 08:45 Abertura

08:45 – 09:30 Windows Server 2008 & Windows 7 – André Satziak da Silva

09:30 – 10:20 Microsoft Sharepoint 2010 – Fabian André Gehrke

10:20 – 10:40 Coffee Break

10:40 – 11:30 Windows Azure – Lucas Romão

11:30 – 12:20 SQL Azure, SQL Server Densali e BI & BA – Rodrigo Ramos Dornel

12:20 – 12:40 Fechamento e Sorteios

INSCRIÇÕES – CLIQUE AQUI

Abraço, Rodrigo

Explicando a coluna index_type_desc na sys.dm_db_index_physical_stats

Na view sys.dm_db_index_physical_stats há uma coluna chamada index_type_desc. Essa coluna indica a descrição do tipo do índice.

As possibilidades de valores nessa coluna se resumem as descritas abaixo:

Clustered Index: esse tipo de índice ordena fisicamente os dados da tabela, usado em colunas que tenham baixa seletividade e/ou, seja frequentemente pesquisada por um range de dados. Só pode haver um clustered index por tabela e esse pode conter no máximo 16 colunas e o tamanho máximo criado para o index key é de 900 bytes.

Non-Clustered Index: esse tipo de índice não impõe ordenação por este motivo é possível existir múltiplos índices deste tipo em uma coluna, contudo há uma limitação de 1000 non-clustered index por tabela. O Non-Clustered Index cria uma estrutura separada que aponta para a localização das páginas de dados. Usado em colunas que são pesquisadas por um valor (não por um range de valores) e em colunas de alta seletividade.

XML Indexes: são índices criados para facilitar a busca de dados dentro de colunas do tipo XML. Os XML Indexes são divididos em dois tipos:

  • Primary: é criado para todos os nós da coluna XML;
  • Secondary: são índices criados para um Path ou Node da coluna XML.

Spatial Index: esse tipo de índice é utilizado em colunas do tipo geometry ou geography.

Heap: se os dados de uma tabela não estão logicamente classificados, ou não há ordem de dados especificados na tabela isso será considerado um Heap Structure.

Para maiores informações sobre a sys.dm_db_index_physical_stats basta acessar o link http://msdn.microsoft.com/pt-br/library/ms188917.aspx

Abraço, Rodrigo