<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos desempenho - Diego Nogare</title>
	<atom:link href="https://diegonogare.net/tags/desempenho/feed/" rel="self" type="application/rss+xml" />
	<link>https://diegonogare.net/tags/desempenho/</link>
	<description>Consultor Executivo de IA &#38; ML</description>
	<lastBuildDate>Tue, 15 Apr 2025 12:13:06 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://i0.wp.com/diegonogare.net/wp-content/uploads/2025/06/cropped-cropped-DN-Black-300x300-1.png?fit=32%2C32&#038;ssl=1</url>
	<title>Arquivos desempenho - Diego Nogare</title>
	<link>https://diegonogare.net/tags/desempenho/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">247556142</site>	<item>
		<title>Avaliação de agentes e sistemas multiagentes de LLM</title>
		<link>https://diegonogare.net/2025/02/avaliacao-de-agentes-e-sistemas-multiagentes-de-llm/</link>
		
		<dc:creator><![CDATA[Diego Nogare]]></dc:creator>
		<pubDate>Mon, 03 Feb 2025 02:12:24 +0000</pubDate>
				<category><![CDATA[Inteligência Artificial]]></category>
		<category><![CDATA[Agentes]]></category>
		<category><![CDATA[desempenho]]></category>
		<category><![CDATA[IA Generativa]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[Multiagentes]]></category>
		<category><![CDATA[sistemas multiagentes]]></category>
		<guid isPermaLink="false">https://diegonogare.net/?p=3971</guid>

					<description><![CDATA[<p>A crescente adoção de Large Language Models (LLMs) está impactando o mercado, todos profissionais de TI que não estivessem presos em uma caverna sem internet nestes últimos meses tendem a concordar com isso. No entanto, a combinação de múltiplos agentes baseados em LLMs levanta desafios únicos, e por sinal, bem complexos! No modelo tradicional de...</p>
<p>O post <a href="https://diegonogare.net/2025/02/avaliacao-de-agentes-e-sistemas-multiagentes-de-llm/">Avaliação de agentes e sistemas multiagentes de LLM</a> apareceu primeiro em <a href="https://diegonogare.net">Diego Nogare</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A crescente adoção de <em>Large Language Models</em> (LLMs) está impactando o mercado, todos profissionais de TI que não estivessem presos em uma caverna sem internet nestes últimos meses tendem a concordar com isso. No entanto, a combinação de múltiplos agentes baseados em LLMs levanta desafios únicos, e por sinal, bem complexos! No modelo tradicional de Machine Learning sempre validamos os modelos com métricas de avaliação de performance como a <a href="https://diegonogare.net/2020/04/performance-de-machine-learning-matriz-de-confusao/" target="_blank" rel="noopener">matriz de confusão</a>, mas, como medir a eficiência desses sistemas de agentes ou multiagentes de LLM?</p>
<p>Avaliar um único LLM já exige métricas robustas, porém um sistema multiagente adiciona ainda mais camadas de complexidade. <a href="https://diegonogare.net/2025/01/o-que-sao-agentes-e-sistemas-multiagentes-de-llm/" target="_blank" rel="noopener">Cada agente pode desempenhar papéis diferentes</a>, interagir de formas variadas e impactar o resultado final do sistema.</p>
<p>Quero explorar, e te apresentar, por que a medição é fundamental, além de comentar sobre os desafios envolvidos e as diferenças entre um LLM isolado e um sistema multiagente, como também, falar das principais métricas de avaliação formais e também dos métodos empíricos.</p>
<h3>Por que medir a eficiência de sistemas multiagentes?</h3>
<p>Medir o desempenho de sistemas multiagentes baseados em LLMs é peça importante para validar sua eficácia em aplicações reais. Diferente de um único modelo de linguagem, um sistema multiagente pode envolver diversos componentes colaborativos. Contudo, se não forem avaliados corretamente, esses sistemas podem apresentar problemas como redundância, latência e inconsistências nos resultados.</p>
<p>Outro fator crítico é a otimização de recursos computacionais. Sistemas multiagentes podem consumir alto poder computacional, demandando otimização para evitar desperdício de capacidade de processamento, e afinal, jogar dinheiro fora.<br />
O impacto na experiência do usuário também é relevante. <em>Chatbots</em> avançados, assistentes de IA e automação de processos já usam sistemas multiagentes. Se a colaboração entre agentes não for fluida e eficaz, os usuários podem enfrentar respostas incoerentes, atrasos ou falhas no fluxo da interação. Além dos riscos que citei no  finalzinho do primeiro parágrafo.</p>
<h3>Desafios na avaliação de sistemas multiagentes</h3>
<p>Um dos principais desafios é a complexidade das interações entre agentes. Ao contrário de um LLM isolado, um sistema multiagente precisa considerar não apenas a precisão das respostas, mas, também, a fluidez da comunicação entre os agentes. Existem várias <a href="https://diegonogare.net/2025/01/estrategias-para-construir-agentes-e-sistemas-multiagentes/" target="_blank" rel="noopener">estratégias que ajudam a criar</a> sistemas multiagentes.</p>
<p>Outro desafio é a variabilidade dos cenários de teste. Diferentes aplicações exigem diferentes abordagens de avaliação. Por exemplo, a consistência das respostas e capacidade de adaptação ao contexto devem ser testados em sistemas voltados para atendimento ao cliente. Já agentes usados para geração de código precisam ser avaliados pela exatidão e eficiência na colaboração além de entregar código que compila.</p>
<p>A escalabilidade também é um ponto crítico, contudo, a medida que mais agentes são adicionados no fluxo, o desempenho pode ser impactado de maneiras imprevisíveis. Uma medição eficaz precisa metrificar como a escalabilidade afeta latência, uso de memória e qualidade das respostas.</p>
<h3>Diferenças entre medir um único LLM e um sistema de multiagentes</h3>
<p>A avaliação de um único LLM geralmente se concentra na precisão das respostas, fluência textual e eficiência computacional, contudo, deixa outras métricas de fora. Por exemplo, as métricas tradicionais incluem perplexidade, <a href="https://arxiv.org/abs/1509.09088" target="_blank" rel="noopener"><em>Bilingual Evaluation Understudy</em> (BLEU)</a> e <a href="https://arxiv.org/pdf/1601.02789" target="_blank" rel="noopener"><em>Metric for Evaluation of Translation with Explicit Ordering</em> (METEOR)</a>, que analisam a qualidade do texto gerado. No entanto, esses critérios não são suficientes para um sistema multiagente.</p>
<p>Em um sistema de agentes colaborativos, a interdependência entre agentes deve ser considerada. Isso significa que métricas como tempo de resposta em interações múltiplas, coerência global da conversa e resiliência a falhas se tornam mais importantes. Se um agente falha ou gera uma resposta inconsistente, a avaliação precisa medir como o sistema como um todo reage e compensa essas falhas.<br />
Além disso, o comportamento emergente é um fator relevante. Em sistemas multiagentes, os agentes podem desenvolver padrões de interação que não foram necessariamente previstos. Garantir a adaptabilidade do sistema é essencial para assegurar que as respostas geradas sejam úteis e confiáveis.</p>
<h2>Mas afinal, e as métricas de avaliação?!</h2>
<h2>Principais métricas para avaliação formal</h2>
<p>Diferentes métricas são utilizadas para avaliação de sistemas multiagentes de LLM, contudo, algumas das mais relevantes são:</p>
<ul>
<li><strong>Latência</strong>: Mede o tempo de resposta do sistema ao longo de múltiplas interações.</li>
<li><strong>Coerência conversacional</strong>: Avalia se as respostas entre diferentes agentes mantêm um fluxo lógico e coerente.</li>
<li><strong>Taxa de erro</strong>: Identifica falhas na comunicação e respostas inconsistentes geradas pelos agentes.</li>
<li><strong>Uso de recursos computacionais</strong>: Monitora a eficiência em termos de  poder computacional, medindo consumo de CPU, GPU, memória, etc.</li>
<li><strong>Capacidade de Escalabilidade</strong>: Analisa como o desempenho do sistema se altera conforme novos agentes são adicionados.</li>
<li><strong>Resiliência</strong>: Avalia a capacidade do sistema de se adaptar a falhas de agentes individuais.</li>
</ul>
<h3>Métodos para avaliação empírica</h3>
<p>As avaliações empíricas consistem principalmente em testes simulados e avaliações em ambientes reais, e em algumas situações pontuais, podem considerar benchmarks específicos de nicho.</p>
<p>Os testes simulados permitem modelar interações entre agentes em cenários controlados, entretanto, esses testes ajudam a identificar falhas antes da implementação prática.</p>
<p>Já a avaliação em ambiente real é usada para validar a aplicabilidade e integração do sistema. Testes com usuários reais, análise de feedback e monitoramento contínuo ajudam a garantir que o desempenho se mantem adequado ao longo do tempo.</p>
<p>Por fim, os benchmarks específicos de nicho oferecem comparações padronizadas entre diferentes soluções de vários outros sistemas, permitindo identificar os pontos fortes e fracos de cada abordagem, possibilitando comparar a avaliação de sistemas multiagentes de LLM que você está fazendo com outros sistemas do mesmo contexto.</p>
<h3>Para encerrar</h3>
<p>É fundamental lembrar que não existe uma única métrica mágica que resolva tudo! Você tem as métricas formais, como correspondência exata e distâncias de string, que são ótimas para obter medições claras e objetivas, especialmente quando você precisa verificar se uma resposta é factualmente correta ou quão próximos dois textos estão.</p>
<p>Depois, também tem as métricas empíricas, que mergulham nas coisas mais interpretativas, como o quão bem uma IA segue instruções, quão relevantes e coerentes são suas respostas e até mesmo se ela está usando linguagem tóxica.</p>
<p>Como estamos falando de sistemas multiagentes, você pode até mesmo colocar uma IA como jurada para fazer as coisas rapidamente. Mas mesmo assim, é importante estar ciente de que até os agentes de IA podem ter vieses e impactar seu projeto!</p>
<p>&nbsp;</p>
<p>Para aprofundar nas coisas que escrevi no texto, recomendo a leitura do capítulo 12 do livro <a href="https://amzn.to/3WKtlSj" target="_blank" rel="noopener">Generative AI on Google Cloud with LangChain</a>; e o Capítulo 3 do livro <a href="https://amzn.to/4jzjZ5A" target="_blank" rel="noopener">AI Engineering</a>;</p>
<p>&nbsp;</p>
<blockquote><p>Imagem de capa <a href="https://x.com/i/grok?conversation=1886235212428013735" target="_blank" rel="noopener">criada com Grok</a>, a partir do prompt: &#8220;Gere uma imagem onde o Agente Smith do filme Matrix está fazendo uma avaliação em um tablet, ele está com expressão de preocupado. Utilize o cenário apropriado, destaque o rosto do agente e dê ênfase para a avaliação que ele está fazendo. Utilize estilo de ilustração digital de cartoon&#8221;</p></blockquote>
<p>O post <a href="https://diegonogare.net/2025/02/avaliacao-de-agentes-e-sistemas-multiagentes-de-llm/">Avaliação de agentes e sistemas multiagentes de LLM</a> apareceu primeiro em <a href="https://diegonogare.net">Diego Nogare</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3971</post-id>	</item>
		<item>
		<title>Comparativo de inserção de dados em uma tabela com ColumnStore Index</title>
		<link>https://diegonogare.net/2013/02/comparativo-de-insero-de-dados-em-uma-tabela-com-columnstore-index/</link>
		
		<dc:creator><![CDATA[Diego Nogare]]></dc:creator>
		<pubDate>Thu, 14 Feb 2013 16:48:18 +0000</pubDate>
				<category><![CDATA[Artigo]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Informativo]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Tech Ed Brasil]]></category>
		<category><![CDATA[TechNet]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[bi]]></category>
		<category><![CDATA[business intelligence]]></category>
		<category><![CDATA[ColumnStore Index]]></category>
		<category><![CDATA[comparativo]]></category>
		<category><![CDATA[desempenho]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sql server]]></category>
		<guid isPermaLink="false">http://diegonogare.net/?p=343</guid>

					<description><![CDATA[<p>Fala galera, o ColumnStore Index é um novo formato de índice que foi lançado junto ao SQL Server 2012, este índice usa um padrão de compressão de dados proprietário da Microsoft e altera o formato de armazenamento dos dados nas páginas do índice. A primeira vez que um registro é inserido no índice, ele registra...</p>
<p>O post <a href="https://diegonogare.net/2013/02/comparativo-de-insero-de-dados-em-uma-tabela-com-columnstore-index/">Comparativo de inserção de dados em uma tabela com ColumnStore Index</a> apareceu primeiro em <a href="https://diegonogare.net">Diego Nogare</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Fala galera, o <strong>ColumnStore Index</strong> é um novo formato de índice que foi lançado junto ao SQL Server 2012, este índice usa um padrão de compressão de dados proprietário da Microsoft e altera o formato de armazenamento dos dados nas páginas do índice. A primeira vez que um registro é inserido no índice, ele registra o dado bruto, qualquer outra aparição deste mesmo dado dentro do índice, o SQL faz um apontamento de memória para o primeiro registro, diminuindo significativamente o tamanho da página com os índices.</p>
<p>Este novo formato de índice não chegou para substituir os já convencionais e úteis <strong>Clustered</strong> e <strong>Non-Clustered</strong>, ele vem para atender um outro cenário. O armazenamento do ColumnStore Index altera a escrita dos dados do índice que estamos acostumados a ver em um padrão linear (como a figura abaixo).</p>
<p><a href="https://i0.wp.com/blogdiegonogare.azurewebsites.net/wp-content/uploads/2013/02/image-1.png"><img data-recalc-dims="1" fetchpriority="high" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://i0.wp.com/blogdiegonogare.azurewebsites.net/wp-content/uploads/2013/02/image_thumb-1.png?resize=550%2C172" alt="image" width="550" height="172" border="0" /></a></p>
<p>Para um formato colunar – <em>por isso o nome ColumnStore</em> – armazenando todos os registros da coluna em uma mesma página. Uma representação visula seria como a imagem abaixo:</p>
<p><a href="https://i0.wp.com/blogdiegonogare.azurewebsites.net/wp-content/uploads/2013/02/image1-1.png"><img data-recalc-dims="1" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://i0.wp.com/blogdiegonogare.azurewebsites.net/wp-content/uploads/2013/02/image_thumb1-1.png?resize=550%2C234" alt="image" width="550" height="234" border="0" /></a></p>
<p>Os ganhos de performance com o uso correto do ColumnStore Index varia entre 10 e 100X. Podendo, em alguns casos reais que já presenciei, chegar a retornos 400X mais rápidos. Porém o ColumnStore Index não é só maravilhas. A utilização deste índice em uma tabela a transforma em Read Only, impedindo manutenção nos dados já existentes. Este cenário de dados como somente leitura nos remete à ambientes de Data Warehouse, onde a informação armazenada sobre manutenção incremental em determinados momentos do ciclo. Em alguns casos sendo incrementado somente uma vez por noite, em outros cenários somente uma atualização semanal, em um terceiro podendo ser uma vez por mês. Isso varia de acordo com a necessidade da área de negócios.</p>
<blockquote><p>Agora, se a tabela está em um formato Read Only, como podemos inserir dados incrementais nela???</p></blockquote>
<p>Pensando sobre como implementar estes incrementos, vem à mente 3 possibilidades. Podemos <strong>desabilitar, inserir e reabilitar</strong> o índice, <strong>remover, inserir e recriar</strong> o índice ou então trabalhar com <strong>Particionamento de Tabelas</strong>, onde temos as partições com o índice e uma tabela onde serão inseridos os dados.</p>
<p>Para colocar em comparação estes três cenários, montei um ambiente de teste com aproximadamente 35Milhões de linhas e fiz comparativo entre eles.</p>
<p>Veja o comparativo abaixo entre Logical Read dos três cenários, e também o tempo necessário para realizar cada atividade.</p>
<p><a href="https://i0.wp.com/blogdiegonogare.azurewebsites.net/wp-content/uploads/2013/02/image2-1.png"><img data-recalc-dims="1" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://i0.wp.com/blogdiegonogare.azurewebsites.net/wp-content/uploads/2013/02/image_thumb2-1.png?resize=550%2C330" alt="image" width="550" height="330" border="0" /></a></p>
<p><a href="https://i0.wp.com/blogdiegonogare.azurewebsites.net/wp-content/uploads/2013/02/image3-1.png"><img data-recalc-dims="1" loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://i0.wp.com/blogdiegonogare.azurewebsites.net/wp-content/uploads/2013/02/image_thumb3-1.png?resize=550%2C330" alt="image" width="550" height="330" border="0" /></a></p>
<p align="left">O teste consistiu em <strong>criar uma tabela com 33milhões</strong> de registros e aplicar o <strong>ColumnStore Index</strong> nesta tabela. Em seguida, <strong>adicionar mais 1.6Milhões</strong> de linhas… Realizamos o teste no mesmo ambiente 2 vezes, e tiramos a média tanto de <strong><em>Logical Reads</em></strong> quanto de <strong><em>Elapsed Time</em></strong> do processo.</p>
<p>Os resultados provam que a melhor solução, disparada, é a utilização de <strong>Partition Table</strong>. A alguns meses eu havia escrito uma série com 7 posts sobre o assunto, e acredito que podem ser aproveitados para o entendimento do que fiz neste exemplo.</p>
<p><a href="https://diegonogare.net/2012/10/partition-table-particionamento-de-tabelas-parte1/" target="_blank" rel="noopener noreferrer">Partition Table (Particionamento de Tabelas) – Parte#1</a></p>
<p><a href="https://diegonogare.net/2012/10/partition-table-cenariosbeneficios-parte2/" target="_blank" rel="noopener noreferrer">Partition Table (Cenários/Benefícios) – Parte#2</a></p>
<p><a href="https://diegonogare.net/2012/10/partition-table-definicoesterminologias-parte3/" target="_blank" rel="noopener noreferrer">Partition Table (Definições/Terminologias) – Parte#3</a></p>
<p><a href="https://diegonogare.net/2012/10/partition-table-criando-filegroup-parte4/" target="_blank" rel="noopener noreferrer">Partition Table (Criando Filegroup) – Parte#4</a></p>
<p><a href="https://diegonogare.net/2012/10/partition-table-criando-partition-function-parte5/" target="_blank" rel="noopener noreferrer">Partition Table (Criando Partition Function) – Parte#5</a></p>
<p><a href="https://diegonogare.net/2012/11/partition-table-criando-o-partition-scheme-parte6/" target="_blank" rel="noopener noreferrer">Partition Table (Criando o Partition Scheme) – Parte#6</a></p>
<p><a href="https://diegonogare.net/2012/11/partition-table-criando-a-tabela-parte7/" target="_blank" rel="noopener noreferrer">Partition Table (Criando a tabela) – Parte#7</a></p>
<p>Caso alguém queira simular o processo que utilizei, segue abaixo a criação do ambiente e a população das tabelas com poucos dados. É claro que para você simular a mesma coisa que fiz aqui, você precisa adaptar este código abaixo para seu cenário.</p>
<div class="csharpcode">
<pre class="alt">/*******************************************/</pre>
<pre>/*********** CRIAÇÃO DO AMBIENTE ***********/</pre>
<pre class="alt">/*******************************************/</pre>
<pre></pre>
<pre class="alt"><span class="kwrd">CREATE</span> <span class="kwrd">DATABASE</span> ngrSolutionsDW</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre><span class="kwrd">USE</span> ngrSolutionsDW</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre></pre>
<pre class="alt">/*******************************************/</pre>
<pre>/*********** LIMPEZA DO AMBIENTE ***********/</pre>
<pre class="alt">/*******************************************/</pre>
<pre></pre>
<pre class="alt"><span class="kwrd">USE</span> ngrSolutionsDW</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre><span class="kwrd">DROP</span> <span class="kwrd">SEQUENCE</span> seq_Codigo</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre><span class="kwrd">DROP</span> <span class="kwrd">TABLE</span> tabelaProducao</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre><span class="kwrd">DROP</span> <span class="kwrd">TABLE</span> tabelaProducao_v2</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre><span class="kwrd">DROP</span> PARTITION SCHEME ps_DataAtualizacao</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre><span class="kwrd">DROP</span> PARTITION <span class="kwrd">FUNCTION</span> pf_DataAtualizacao</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre></pre>
<pre class="alt">/*******************************************/</pre>
<pre>/********** POPULAÇÃO DO AMBIENTE **********/</pre>
<pre class="alt">/*******************************************/</pre>
<pre></pre>
<pre class="alt"><span class="kwrd">CREATE</span> <span class="kwrd">TABLE</span> tabelaProducao(</pre>
<pre>      id <span class="kwrd">INT</span> <span class="kwrd">NOT</span> <span class="kwrd">NULL</span></pre>
<pre class="alt">    , idOrigem <span class="kwrd">INT</span> <span class="kwrd">NOT</span> <span class="kwrd">NULL</span></pre>
<pre>    , nome <span class="kwrd">VARCHAR</span>(20) <span class="kwrd">NOT</span> <span class="kwrd">NULL</span></pre>
<pre class="alt">    , endereco <span class="kwrd">VARCHAR</span>(30) <span class="kwrd">NOT</span> <span class="kwrd">NULL</span></pre>
<pre>    , dataCadastro <span class="kwrd">date</span> <span class="kwrd">NOT</span> <span class="kwrd">NULL</span></pre>
<pre class="alt">    , dataAtualizacao <span class="kwrd">date</span> <span class="kwrd">NOT</span> <span class="kwrd">NULL</span>  )</pre>
<pre><span class="kwrd">ON</span> [<span class="kwrd">PRIMARY</span>]</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre></pre>
<pre class="alt"><span class="kwrd">ALTER</span> <span class="kwrd">TABLE</span> tabelaProducao <span class="kwrd">WITH</span> <span class="kwrd">CHECK</span> <span class="kwrd">ADD</span></pre>
<pre>    <span class="kwrd">CONSTRAINT</span> [validarCodigo_V1_Check]    <span class="kwrd">CHECK</span></pre>
<pre class="alt">    (dataAtualizacao &gt;= <span class="str">'2010-01-01'</span> <span class="kwrd">and</span> dataAtualizacao &lt; <span class="str">'2013-03-01'</span>)</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"><span class="kwrd">ALTER</span> <span class="kwrd">TABLE</span> tabelaProducao <span class="kwrd">CHECK</span> <span class="kwrd">CONSTRAINT</span> [validarCodigo_V1_Check]</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre><span class="kwrd">CREATE</span> <span class="kwrd">SEQUENCE</span> seq_Codigo <span class="kwrd">AS</span> <span class="kwrd">INT</span></pre>
<pre class="alt">INCREMENT <span class="kwrd">BY</span> 1</pre>
<pre>minvalue 1</pre>
<pre class="alt">maxvalue 10000</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre>/* 1K registros de SETEMBRO 2012 */</pre>
<pre class="alt">insert <span class="kwrd">into</span> tabelaProducao(id, idOrigem, nome,</pre>
<pre>            endereco, dataCadastro, dataAtualizacao)</pre>
<pre class="alt"><span class="kwrd">values</span> (<span class="kwrd">next</span> <span class="kwrd">value</span> <span class="kwrd">for</span> seq_Codigo, <span class="kwrd">convert</span>(<span class="kwrd">int</span>,rand()*100)+1,</pre>
<pre>    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,20),</pre>
<pre class="alt">    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,30),</pre>
<pre>    dateadd(<span class="kwrd">month</span>,-5, <span class="kwrd">convert</span>(datetime, getdate())),</pre>
<pre class="alt">    dateadd(<span class="kwrd">month</span>,-5, <span class="kwrd">convert</span>(datetime, getdate())))</pre>
<pre><span class="kwrd">go</span> 1000</pre>
<pre class="alt"></pre>
<pre>/* 1K registros de OUTUBRO 2012 */</pre>
<pre class="alt">insert <span class="kwrd">into</span> tabelaProducao(id, idOrigem, nome,</pre>
<pre>            endereco, dataCadastro, dataAtualizacao)</pre>
<pre class="alt"><span class="kwrd">values</span> (<span class="kwrd">next</span> <span class="kwrd">value</span> <span class="kwrd">for</span> seq_Codigo, <span class="kwrd">convert</span>(<span class="kwrd">int</span>,rand()*100)+1,</pre>
<pre>    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,20),</pre>
<pre class="alt">    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,30),</pre>
<pre>    dateadd(<span class="kwrd">month</span>,-4, <span class="kwrd">convert</span>(datetime, getdate())),</pre>
<pre class="alt">    dateadd(<span class="kwrd">month</span>,-4, <span class="kwrd">convert</span>(datetime, getdate())))</pre>
<pre><span class="kwrd">go</span> 1000</pre>
<pre class="alt"></pre>
<pre>/* 1K registros de NOVEMBRO 2012 */</pre>
<pre class="alt">insert <span class="kwrd">into</span> tabelaProducao(id, idOrigem, nome,</pre>
<pre>            endereco, dataCadastro, dataAtualizacao)</pre>
<pre class="alt"><span class="kwrd">values</span> (<span class="kwrd">next</span> <span class="kwrd">value</span> <span class="kwrd">for</span> seq_Codigo, <span class="kwrd">convert</span>(<span class="kwrd">int</span>,rand()*100)+1,</pre>
<pre>    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,20),</pre>
<pre class="alt">    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,30),</pre>
<pre>    dateadd(<span class="kwrd">month</span>,-3, <span class="kwrd">convert</span>(datetime, getdate())),</pre>
<pre class="alt">    dateadd(<span class="kwrd">month</span>,-3, <span class="kwrd">convert</span>(datetime, getdate())))</pre>
<pre><span class="kwrd">go</span> 1000</pre>
<pre class="alt"></pre>
<pre>/* 1K registros de DEZEMBRO 2012 */</pre>
<pre class="alt">insert <span class="kwrd">into</span> tabelaProducao(id, idOrigem, nome,</pre>
<pre>            endereco, dataCadastro, dataAtualizacao)</pre>
<pre class="alt"><span class="kwrd">values</span> (<span class="kwrd">next</span> <span class="kwrd">value</span> <span class="kwrd">for</span> seq_Codigo, <span class="kwrd">convert</span>(<span class="kwrd">int</span>,rand()*100)+1,</pre>
<pre>    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,20),</pre>
<pre class="alt">    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,30),</pre>
<pre>    dateadd(<span class="kwrd">month</span>,-2, <span class="kwrd">convert</span>(datetime, getdate())),</pre>
<pre class="alt">    dateadd(<span class="kwrd">month</span>,-2, <span class="kwrd">convert</span>(datetime, getdate())))</pre>
<pre><span class="kwrd">go</span> 1000</pre>
<pre class="alt"></pre>
<pre>/* 1K registros de JANEIRO 2013 */</pre>
<pre class="alt">insert <span class="kwrd">into</span> tabelaProducao(id, idOrigem, nome,</pre>
<pre>            endereco, dataCadastro, dataAtualizacao)</pre>
<pre class="alt"><span class="kwrd">values</span> (<span class="kwrd">next</span> <span class="kwrd">value</span> <span class="kwrd">for</span> seq_Codigo, <span class="kwrd">convert</span>(<span class="kwrd">int</span>,rand()*100)+1,</pre>
<pre>    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,20),</pre>
<pre class="alt">    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,30),</pre>
<pre>    dateadd(<span class="kwrd">month</span>,-1, <span class="kwrd">convert</span>(datetime, getdate())),</pre>
<pre class="alt">    dateadd(<span class="kwrd">month</span>,-1, <span class="kwrd">convert</span>(datetime, getdate())))</pre>
<pre><span class="kwrd">go</span> 1000</pre>
<pre class="alt"></pre>
<pre>/* 500 registros de FEVEREIRO 2013 */</pre>
<pre class="alt">insert <span class="kwrd">into</span> tabelaProducao(id, idOrigem, nome,</pre>
<pre>            endereco, dataCadastro, dataAtualizacao)</pre>
<pre class="alt"><span class="kwrd">values</span> (<span class="kwrd">next</span> <span class="kwrd">value</span> <span class="kwrd">for</span> seq_Codigo, <span class="kwrd">convert</span>(<span class="kwrd">int</span>,rand()*100)+1,</pre>
<pre>    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,20),</pre>
<pre class="alt">    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,30),</pre>
<pre>    getdate(), getdate())</pre>
<pre class="alt"><span class="kwrd">go</span> 500</pre>
<pre></pre>
<pre class="alt"><span class="kwrd">SET</span> <span class="kwrd">STATISTICS</span> IO <span class="kwrd">ON</span>; <span class="kwrd">SET</span> <span class="kwrd">STATISTICS</span> <span class="kwrd">TIME</span> <span class="kwrd">ON</span></pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre>/**************************************************************************/</pre>
<pre class="alt">/**************************** DISABLE / REBUILD ***************************/</pre>
<pre>/**************************************************************************/</pre>
<pre class="alt"></pre>
<pre>/*******************************************/</pre>
<pre class="alt">/************ CRIAÇÃO DO <span class="kwrd">INDEX</span> *************/</pre>
<pre>/*******************************************/</pre>
<pre class="alt"><span class="kwrd">CREATE</span> <span class="kwrd">NONCLUSTERED</span> COLUMNSTORE <span class="kwrd">INDEX</span> [idx_csi_tabelaProducao]</pre>
<pre><span class="kwrd">ON</span> tabelaProducao ( id, nome, endereco, dataCadastro, dataAtualizacao )</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre></pre>
<pre class="alt">/*******************************************/</pre>
<pre>/******** INSERIR NA TABELA DE PROD ********/</pre>
<pre class="alt">/*******************************************/</pre>
<pre></pre>
<pre class="alt">/* +1 em FEVEREIRO 2013 */</pre>
<pre><span class="rem">-- Forçar o erro por causa que a tabela está com ColumnStore Index</span></pre>
<pre class="alt">insert <span class="kwrd">into</span> tabelaProducao(id, idOrigem, nome,</pre>
<pre>            endereco, dataCadastro, dataAtualizacao)</pre>
<pre class="alt"><span class="kwrd">values</span> (<span class="kwrd">next</span> <span class="kwrd">value</span> <span class="kwrd">for</span> seq_Codigo, <span class="kwrd">convert</span>(<span class="kwrd">int</span>,rand()*100)+1,</pre>
<pre>    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,20),</pre>
<pre class="alt">    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,30),</pre>
<pre>    getdate(), getdate())</pre>
<pre class="alt"></pre>
<pre>/*******************************************/</pre>
<pre class="alt">/************ DISABLE / REBUILD ************/</pre>
<pre>/*******************************************/</pre>
<pre class="alt"><span class="kwrd">ALTER</span> <span class="kwrd">INDEX</span> idx_csi_tabelaProducao <span class="kwrd">ON</span> tabelaProducao DISABLE</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"><span class="kwrd">ALTER</span> <span class="kwrd">INDEX</span> idx_csi_tabelaProducao <span class="kwrd">ON</span> tabelaProducao REBUILD</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre>/*******************************************/</pre>
<pre class="alt">/************ POPULAR A TABELA *************/</pre>
<pre>/*******************************************/</pre>
<pre class="alt"><span class="kwrd">ALTER</span> <span class="kwrd">INDEX</span> idx_csi_tabelaProducao <span class="kwrd">ON</span> tabelaProducao DISABLE</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre>insert <span class="kwrd">into</span> tabelaProducao(id, idOrigem, nome,</pre>
<pre class="alt">            endereco, dataCadastro, dataAtualizacao)</pre>
<pre><span class="kwrd">values</span> (<span class="kwrd">next</span> <span class="kwrd">value</span> <span class="kwrd">for</span> seq_Codigo, <span class="kwrd">convert</span>(<span class="kwrd">int</span>,rand()*100)+1,</pre>
<pre class="alt">    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,20),</pre>
<pre>    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,30),</pre>
<pre class="alt">    dateadd(<span class="kwrd">month</span>,-4, <span class="kwrd">convert</span>(datetime, getdate())), getdate())</pre>
<pre><span class="kwrd">go</span> 1000</pre>
<pre class="alt"></pre>
<pre><span class="kwrd">ALTER</span> <span class="kwrd">INDEX</span> idx_csi_tabelaProducao <span class="kwrd">ON</span> tabelaProducao REBUILD</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre></pre>
<pre class="alt">/**************************************************************************/</pre>
<pre>/****************************** <span class="kwrd">DROP</span> / <span class="kwrd">CREATE</span> *****************************/</pre>
<pre class="alt">/**************************************************************************/</pre>
<pre></pre>
<pre class="alt">/*******************************************/</pre>
<pre>/************ CRIAÇÃO DO <span class="kwrd">INDEX</span> *************/</pre>
<pre class="alt">/*******************************************/</pre>
<pre><span class="kwrd">CREATE</span> <span class="kwrd">NONCLUSTERED</span> COLUMNSTORE <span class="kwrd">INDEX</span> [idx_csi_tabelaProducao]</pre>
<pre class="alt"><span class="kwrd">ON</span> tabelaProducao ( id, nome, endereco, dataCadastro, dataAtualizacao )</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre>/*******************************************/</pre>
<pre class="alt">/******** INSERIR NA TABELA DE PROD ********/</pre>
<pre>/*******************************************/</pre>
<pre class="alt"></pre>
<pre>/* +1 em FEVEREIRO 2013 */</pre>
<pre class="alt"><span class="rem">-- Forçar o erro por causa que a tabela está com ColumnStore Index</span></pre>
<pre>insert <span class="kwrd">into</span> tabelaProducao(id, idOrigem, nome,</pre>
<pre class="alt">            endereco, dataCadastro, dataAtualizacao)</pre>
<pre><span class="kwrd">values</span> (<span class="kwrd">next</span> <span class="kwrd">value</span> <span class="kwrd">for</span> seq_Codigo, <span class="kwrd">convert</span>(<span class="kwrd">int</span>,rand()*100)+1,</pre>
<pre class="alt">    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,20),</pre>
<pre>    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,30),</pre>
<pre class="alt">    getdate(), getdate())</pre>
<pre></pre>
<pre class="alt">/*******************************************/</pre>
<pre>/************** <span class="kwrd">DROP</span> / <span class="kwrd">CREATE</span> **************/</pre>
<pre class="alt">/*******************************************/</pre>
<pre><span class="kwrd">DROP</span> <span class="kwrd">INDEX</span> [idx_csi_tabelaProducao] <span class="kwrd">ON</span> tabelaProducao</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre></pre>
<pre class="alt"><span class="kwrd">CREATE</span> <span class="kwrd">NONCLUSTERED</span> COLUMNSTORE <span class="kwrd">INDEX</span> [idx_csi_tabelaProducao]</pre>
<pre><span class="kwrd">ON</span> tabelaProducao ( id, nome, endereco, dataCadastro, dataAtualizacao )</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre></pre>
<pre class="alt">/*******************************************/</pre>
<pre>/************ POPULAR A TABELA *************/</pre>
<pre class="alt">/*******************************************/</pre>
<pre><span class="kwrd">DROP</span> <span class="kwrd">INDEX</span> [idx_csi_tabelaProducao] <span class="kwrd">ON</span> tabelaProducao</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre></pre>
<pre class="alt">insert <span class="kwrd">into</span> tabelaProducao(id, idOrigem, nome,</pre>
<pre>            endereco, dataCadastro, dataAtualizacao)</pre>
<pre class="alt"><span class="kwrd">values</span> (<span class="kwrd">next</span> <span class="kwrd">value</span> <span class="kwrd">for</span> seq_Codigo, <span class="kwrd">convert</span>(<span class="kwrd">int</span>,rand()*100)+1,</pre>
<pre>    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,20),</pre>
<pre class="alt">    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,30),</pre>
<pre>    dateadd(<span class="kwrd">month</span>,-4, <span class="kwrd">convert</span>(datetime, getdate())), getdate())</pre>
<pre class="alt"><span class="kwrd">go</span> 1000</pre>
<pre></pre>
<pre class="alt"><span class="kwrd">CREATE</span> <span class="kwrd">NONCLUSTERED</span> COLUMNSTORE <span class="kwrd">INDEX</span> [idx_csi_tabelaProducao]</pre>
<pre><span class="kwrd">ON</span> tabelaProducao ( id, nome, endereco, dataCadastro, dataAtualizacao )</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre></pre>
<pre class="alt">/**************************************************************************/</pre>
<pre>/***************************** PARTITION <span class="kwrd">TABLE</span> ****************************/</pre>
<pre class="alt">/**************************************************************************/</pre>
<pre></pre>
<pre class="alt">/*******************************************/</pre>
<pre>/********** CRIAÇÃO DAS PARTIÇÕES **********/</pre>
<pre class="alt">/*******************************************/</pre>
<pre></pre>
<pre class="alt"><span class="kwrd">CREATE</span> PARTITION <span class="kwrd">FUNCTION</span> [pf_DataAtualizacao](<span class="kwrd">date</span>) <span class="kwrd">AS</span> RANGE <span class="kwrd">RIGHT</span></pre>
<pre><span class="kwrd">FOR</span> <span class="kwrd">VALUES</span> (<span class="str">'2012-09-01'</span>,<span class="str">'2012-10-01'</span>,<span class="str">'2012-11-01'</span>,</pre>
<pre class="alt">            <span class="str">'2012-12-01'</span>,<span class="str">'2013-01-01'</span>,<span class="str">'2013-02-01'</span>,<span class="str">'2013-03-01'</span>)</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre><span class="kwrd">CREATE</span> PARTITION SCHEME [ps_DataAtualizacao]</pre>
<pre class="alt">    <span class="kwrd">AS</span> PARTITION [pf_DataAtualizacao] <span class="kwrd">ALL</span> <span class="kwrd">TO</span> ([<span class="kwrd">PRIMARY</span>])</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre>/*******************************************/</pre>
<pre class="alt">/************ CRIAÇÃO DOS <span class="kwrd">INDEX</span> ************/</pre>
<pre>/*******************************************/</pre>
<pre class="alt"></pre>
<pre><span class="kwrd">CREATE</span> <span class="kwrd">CLUSTERED</span> <span class="kwrd">INDEX</span> [idx_DataCodigo] <span class="kwrd">ON</span> tabelaProducao(DataAtualizacao)</pre>
<pre class="alt"><span class="kwrd">ON</span> ps_DataAtualizacao(dataAtualizacao)</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre><span class="kwrd">CREATE</span> <span class="kwrd">NONCLUSTERED</span> COLUMNSTORE <span class="kwrd">INDEX</span> [idx_csi_tabelaProducao]</pre>
<pre class="alt"><span class="kwrd">ON</span> tabelaProducao ( id, nome, endereco, dataCadastro, dataAtualizacao )</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre>/*******************************************/</pre>
<pre class="alt">/******** INSERIR NA TABELA DE PROD ********/</pre>
<pre>/*******************************************/</pre>
<pre class="alt"></pre>
<pre>/* +1 em FEVEREIRO 2013 */</pre>
<pre class="alt"><span class="rem">-- Forçar o erro por causa que a tabela está com ColumnStore Index</span></pre>
<pre>insert <span class="kwrd">into</span> tabelaProducao(id, idOrigem, nome,</pre>
<pre class="alt">            endereco, dataCadastro, dataAtualizacao)</pre>
<pre><span class="kwrd">values</span> (<span class="kwrd">next</span> <span class="kwrd">value</span> <span class="kwrd">for</span> seq_Codigo, <span class="kwrd">convert</span>(<span class="kwrd">int</span>,rand()*100)+1,</pre>
<pre class="alt">    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,20),</pre>
<pre>    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,30),</pre>
<pre class="alt">    getdate(), getdate())</pre>
<pre></pre>
<pre class="alt">/*******************************************/</pre>
<pre>/******** CRIAÇÃO DA SEGUNDA TABELA ********/</pre>
<pre class="alt">/*******************************************/</pre>
<pre></pre>
<pre class="alt"><span class="kwrd">CREATE</span> <span class="kwrd">TABLE</span> tabelaProducao_V2 (id <span class="kwrd">INT</span> <span class="kwrd">NOT</span> <span class="kwrd">NULL</span>, idOrigem <span class="kwrd">int</span> <span class="kwrd">NOT</span> <span class="kwrd">NULL</span>,</pre>
<pre>    nome <span class="kwrd">VARCHAR</span>(20) <span class="kwrd">NOT</span> <span class="kwrd">NULL</span>, endereco <span class="kwrd">VARCHAR</span>(30) <span class="kwrd">NOT</span> <span class="kwrd">NULL</span>,</pre>
<pre class="alt">    dataCadastro <span class="kwrd">date</span> <span class="kwrd">NOT</span> <span class="kwrd">NULL</span>, dataAtualizacao <span class="kwrd">date</span> <span class="kwrd">NOT</span> <span class="kwrd">NULL</span>)</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre><span class="kwrd">ALTER</span> <span class="kwrd">TABLE</span> tabelaProducao_V2 <span class="kwrd">WITH</span> <span class="kwrd">CHECK</span> <span class="kwrd">ADD</span></pre>
<pre class="alt">    <span class="kwrd">CONSTRAINT</span>[validarCodigo_V2_Check] <span class="kwrd">CHECK</span></pre>
<pre>    (dataAtualizacao &gt;= <span class="str">'2013-02-01'</span> <span class="kwrd">and</span> dataAtualizacao &lt; <span class="str">'2013-03-01'</span>)</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre></pre>
<pre class="alt">/*******************************************/</pre>
<pre>/************ CRIAÇÃO DOS <span class="kwrd">INDEX</span> ************/</pre>
<pre class="alt">/*******************************************/</pre>
<pre></pre>
<pre class="alt"><span class="kwrd">CREATE</span> <span class="kwrd">CLUSTERED</span> <span class="kwrd">INDEX</span> [idx_DataCodigo]</pre>
<pre><span class="kwrd">ON</span> tabelaProducao_v2(DataAtualizacao) <span class="kwrd">ON</span> [<span class="kwrd">PRIMARY</span>]</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre></pre>
<pre class="alt">/*******************************************/</pre>
<pre>/********* MOVIMENTAÇÃO DOS DADOS **********/</pre>
<pre class="alt">/*******************************************/</pre>
<pre><span class="rem">-- Conta os registros</span></pre>
<pre class="alt"><span class="kwrd">SELECT</span> <span class="kwrd">COUNT</span>(0) [TOTAL], <span class="kwrd">min</span>(dataAtualizacao) [MENOR],</pre>
<pre>        <span class="kwrd">max</span>(dataAtualizacao) [MAIOR] <span class="kwrd">FROM</span>  tabelaProducao</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre><span class="kwrd">SELECT</span> <span class="kwrd">COUNT</span>(0) [TOTAL], <span class="kwrd">min</span>(dataAtualizacao) [MENOR],</pre>
<pre class="alt">        <span class="kwrd">max</span>(dataAtualizacao) [MAIOR] <span class="kwrd">FROM</span>  tabelaProducao_v2</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre><span class="rem">-- Movimenta os dados</span></pre>
<pre class="alt"><span class="kwrd">ALTER</span> <span class="kwrd">TABLE</span> tabelaProducao SWITCH PARTITION 7 <span class="kwrd">TO</span> tabelaProducao_v2</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre><span class="rem">-- Conta os registros</span></pre>
<pre class="alt"><span class="kwrd">SELECT</span> <span class="kwrd">COUNT</span>(0) [TOTAL], <span class="kwrd">min</span>(dataAtualizacao) [MENOR],</pre>
<pre>        <span class="kwrd">max</span>(dataAtualizacao) [MAIOR] <span class="kwrd">FROM</span>  tabelaProducao</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre><span class="kwrd">SELECT</span> <span class="kwrd">COUNT</span>(0) [TOTAL], <span class="kwrd">min</span>(dataAtualizacao) [MENOR],</pre>
<pre class="alt">        <span class="kwrd">max</span>(dataAtualizacao) [MAIOR] <span class="kwrd">FROM</span>  tabelaProducao_v2</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre>/* Fevereiro na TABELA 2 */</pre>
<pre class="alt">insert <span class="kwrd">into</span> tabelaProducao_V2(id, idOrigem, nome,</pre>
<pre>            endereco, dataCadastro, dataAtualizacao)</pre>
<pre class="alt"><span class="kwrd">values</span> (<span class="kwrd">next</span> <span class="kwrd">value</span> <span class="kwrd">for</span> seq_Codigo, <span class="kwrd">convert</span>(<span class="kwrd">int</span>,rand()*100)+1,</pre>
<pre>    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,20),</pre>
<pre class="alt">    <span class="kwrd">substring</span>(<span class="kwrd">convert</span>(<span class="kwrd">varchar</span>(40),newid()),1,30),</pre>
<pre>    getdate(), getdate())</pre>
<pre class="alt"><span class="kwrd">go</span> 10</pre>
<pre></pre>
<pre class="alt"><span class="rem">-- Conta os registros</span></pre>
<pre><span class="kwrd">SELECT</span> <span class="kwrd">COUNT</span>(0) [TOTAL], <span class="kwrd">min</span>(dataAtualizacao) [MENOR],</pre>
<pre class="alt">        <span class="kwrd">max</span>(dataAtualizacao) [MAIOR] <span class="kwrd">FROM</span>  tabelaProducao</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"><span class="kwrd">SELECT</span> <span class="kwrd">COUNT</span>(0) [TOTAL], <span class="kwrd">min</span>(dataAtualizacao) [MENOR],</pre>
<pre>        <span class="kwrd">max</span>(dataAtualizacao) [MAIOR] <span class="kwrd">FROM</span>  tabelaProducao_v2</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre></pre>
<pre class="alt"><span class="kwrd">CREATE</span> <span class="kwrd">NONCLUSTERED</span> COLUMNSTORE <span class="kwrd">INDEX</span> [idx_csi_tabelaProducao]</pre>
<pre><span class="kwrd">ON</span> tabelaProducao_v2 ( id, nome, endereco, dataCadastro, dataAtualizacao )</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre></pre>
<pre class="alt"><span class="kwrd">ALTER</span> <span class="kwrd">TABLE</span> tabelaProducao_V2 switch <span class="kwrd">to</span> tabelaProducao partition 7</pre>
<pre><span class="kwrd">GO</span></pre>
<pre class="alt"></pre>
<pre><span class="rem">-- Conta os registros</span></pre>
<pre class="alt"><span class="kwrd">SELECT</span> <span class="kwrd">COUNT</span>(0) [TOTAL], <span class="kwrd">min</span>(dataAtualizacao) [MENOR],</pre>
<pre>        <span class="kwrd">max</span>(dataAtualizacao) [MAIOR] <span class="kwrd">FROM</span>  tabelaProducao</pre>
<pre class="alt"><span class="kwrd">GO</span></pre>
<pre><span class="kwrd">SELECT</span> <span class="kwrd">COUNT</span>(0) [TOTAL], <span class="kwrd">min</span>(dataAtualizacao) [MENOR],</pre>
<pre class="alt">        <span class="kwrd">max</span>(dataAtualizacao) [MAIOR] <span class="kwrd">FROM</span>  tabelaProducao_v2</pre>
<pre>GO</pre>
</div>
<div class="csharpcode"></div>
<div class="csharpcode"></div>
<p>Bom divertimento em seus testes. Espero ver nos comentários sua conclusão sobre este comparativo.</p>
<p>O post <a href="https://diegonogare.net/2013/02/comparativo-de-insero-de-dados-em-uma-tabela-com-columnstore-index/">Comparativo de inserção de dados em uma tabela com ColumnStore Index</a> apareceu primeiro em <a href="https://diegonogare.net">Diego Nogare</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2121</post-id>	</item>
	</channel>
</rss>
