Apaixonado por tecnologia. Trabalho com tecnologia desde 2003.

Saiba mais sobre minha vida profissional aqui .

Fale comigo.
Siga-me no Twitter
Ultimos comentários
Calendário de Posts
<<  julho 2017  >>
stqqssd
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

Siga o @DicaDoNerd no Twitter e acompanhe as novidades


Acredito que não usamos nem 30% do que o Banco de Dados SQL Server oferece. Há alguns dias, conversava com alguns amigos e lembrei de uma dica que a ordem de criação dos índices e consultas faz diferença, então, resolvi testar.

Tive uma surpresa, realmente faz diferença, algo que nem sempre nos atentamos, seguem as evidências dos testes.

Tamanho da tabela

clip_image002

Criação do índice (Notem que inclusive há botões, mover para cima e mover para baixo) .

clip_image002[8]

 

clip_image002[10]

clip_image002[12]

Resultado usando o índice corretamente. (CPF, Nome) Resultado usando o índice com a ordem invertida

O que achei mais engraçado é que o execution Plain apontou 50% para cada execução mostrando que o indice CPF_Nome foi acionado, mas, fez diferença no resultado (Select acima). Eu executei muitas vezes, pois, o Sql Server sempre mantém informações das consultas realizadas…

image

Não contente, fiz uma aplicação para comparar a execução e….. surpresa!!! Mesmo com o ExecutionPlain dizer que o custo era igual para ambos, a execução tem o tempo diferente.

image

Se for um cara chato como eu, vai logo pensar… Bom, depende de como foram feitos os testes… então vaí aí como foi realizado o teste.

class Program
{
static void Main(string[] args)
{

string strCnn = System.Configuration.ConfigurationSettings.AppSettings["cnn"];
Stopwatch timer = new Stopwatch();

for (int i = 0; i < 10; i++)
{
timer.Start();

using (SqlConnection cnn = new SqlConnection(strCnn))
{
using (SqlCommand cmd = new SqlCommand("Select * from Clientes where cpf like '%317395%' and nome like '%Minato%'", cnn))
{
cnn.Open();
var reader = cmd.ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.CloseConnection);
}

}
timer.Stop();
Console.WriteLine("Utilizando Corretamente o Indice (CPf, Nome) " + timer.Elapsed);
timer.Reset();


timer.Start();

using (SqlConnection cnn = new SqlConnection(strCnn))
{
using (SqlCommand cmd = new SqlCommand("Select * from Clientes where nome like '%Minato%' and cpf like '%317395%'", cnn))
{
cnn.Open();
var reader = cmd.ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.CloseConnection);
}

}
timer.Stop();
Console.WriteLine("Utiliando com a ordem invertida (Nome, CPF) " + timer.Elapsed);
timer.Reset();

}

Console.ReadKey();


}
}

 

Então fica a dica. ;-), vamos usar os indices na sequencia correta.

Sigam @DicaDoNerd.

 

Bom, comptei um Netbook recentemente e iniciei os procedimentos para instalação dos softwares que mais utilizo no Sistema Operacional Windows 7 Starter. Instalei o Office 2010, Visual Studio 2010, como na instalação o Visual Studio já cria uma instancia default do SQL Server 2008 Express (SQLExpress), então, pensei: Após a instalação basta eu instalar o Management Studio 2008 e pronto! Cool 

Mas não foi bem isso o que aconteceu. A primeira coisa foi o aviso de incompatibilidade.

Program Compatibility Assistant

This program has known compatibility issues
fter SQL Server Setup completes, you must apply SQL Server 2008 Service Pack 1 (SP1) or a later service pack before you run SQL Server 2008 on this version of Windows.
 Mensagem de Incompatibilidade do MS 2008

 

Bom, não entendi, pois, estava com a ultima versão de todas as aplicações (Windows 7, SQL 2008, Visual Studio 2010), mas, como a opção "Check for solution online" não ajudou em nada, continuei executando a instalação do programa.

Então tive outra surpresa com a seguinte Mensagem: "Invoke or BeginInvoke cannot be called on a control until the window handle has been created".

 Mensagem de Erro ao instalar SQL MMS 2008

Passei horas tentando entender o que estava acontecendo, até que na KB da Microsoft eu vi que um pré-requisito era o Framework 3.5 instalado, então pensei: Eu tenho o Framework 4.0 instalado. Será que é isso? Por incrível que pareça, instalei o framework 3.5 e pronto. Tudo resolvido.

Eu li em alguns artigos que você poderia reinstalar o SQLServer que funcionaria também. Como no meu caso a instalação do Framework 3.5 resolveu e infelizmente não vi em nenhum site isso, resolvi postar essa dica.

 Mande suas sugestões para: contato@alexandreminato.com.br

Até a próxima 8-)

Minato

 
teste