Do que se trata o artigo:

O artigo descreve inovações importantes introduzidas no SQL Server 2012, tendo como foco principal a programação de banco de dados, passando por novas funções e melhorias focadas no desempenho de consultas SQL.

Em que situação o tema útil:

As novas funcionalidades introduzidas no SQL Server 2012, mostradas neste artigo, são úteis para os desenvolvedores de software, analistas de sistemas e para os administradores de banco de dados. São novidades e melhorias extremamente importantes para a utilização de funções com a linguagem Transact-SQL, além de auxiliar na otimização de consultas com um novo conceito de armazenamento de índices chamado ColumnStore Index.

Resumo DevMan:

Neste artigo são mostradas algumas inovações com relação às novas funções introduzidas no SQL Server 2012. Além disso, visando o ganho em desempenho na execução de consultas SQL, são mostrados detalhes e exemplos práticos de utilização do ColumnStore Index, que é uma excelente novidade nesta versão do banco de dados SQL Server com relação ao uso e ao armazenamento de índices.

Em um mercado de tecnologia da informação onde repletas opções de ferramentas e soluções são constantemente adquiridas e utilizadas por nós, usuários de TI, há espaço e muito para as famosas inovações. Em cada nova versão ou atualização de um aplicativo importante para o negócio de nossa empresa, depositamos a credibilidade de que, junto, algo inovador possa nos surpreender e nos auxiliar no desempenho de alguns processos.

Falando em banco de dados, uma das grandes preocupações de um DBA é saber como manter um ambiente estável, performático e sem riscos, visando a satisfação dos usuários dos sistemas existentes em uma empresa. Aliado a estes aspectos, é importante que existam alternativas para que um banco de dados possa estar dentro das boas práticas com relação ao seu desempenho, garantindo boa resposta em uma ou mais bases no momento de uma requisição, seja ela simples ou complexa.

Com base nisto, a nova versão do SQL Server conta com recursos e inovações muito interessantes. Não são apenas aprimoramentos com relação à alta disponibilidade, como a introdução de uma novidade chamada AlwaysOn, para manter a contingência para grupos de bases de dados dentro de um servidor ou cluster, ou talvez na capacidade de gerenciamento, com a adição de novas views dinâmicas de monitoramento, ou ainda sobre aspectos relacionados com a segurança, onde dezenove novas permissões foram introduzidas, além de mudanças com relação às funções de servidor e acesso aos bancos de dados da instância. As inovações que mostraremos neste artigo estão relacionadas com a criação de novas funções e novos construtores dentro da linguagem Transact-Sql (T-SQL), além de passarmos por conceitos e exemplos de utilização de um recurso que promete acelerar o desempenho de consultas SQL, chamado ColumnStore Index.

Novidades para a linguagem T-SQL

Em cada nova versão do banco de dados Microsoft SQL Server, há sempre melhorias e novidades com relação à linguagem T-SQL. As demandas cada vez mais complexas, sendo elas em ambientes transacionais ou em Business Intelligence, são motivadoras para a construção de novos comandos que facilitem a programação, buscando resultados satisfatórios e mais otimizados.

Neste contexto, na versão 2012 do SQL Server, são bem variados os novos recursos para a linguagem, os quais, a partir deste artigo, serão explicados e demonstrados na prática. Para mais detalhes e outros exemplos sobre a utilização dos mesmos, no final deste artigo constam alguns links para referência, bem como para o download do gerenciador de banco de dados SQL Server em sua versão de avaliação.

Novos construtores

Visando o aumento do desempenho e a necessidade de utilizar o conceito de paginação em consultas SQL dentro do banco de dados, embora diversos frameworks sejam capazes de criar e desenvolver este conceito, desde a versão 2005 é possível codificar a paginação no SQL Server por meio de funções de ranqueamento em conjunto com as Table Expressions. Com a nova versão, o SQL Server permite usufruir de dois novos construtores chamados OFFSET e FETCH NEXT. O valor informado no parâmetro OFFSET será a quantidade de linhas que iremos desconsiderar na consulta, enquanto para FETCH NEXT, a consulta irá retornar as linhas subsequentes conforme o valor informado neste parâmetro. Vejamos um exemplo a partir da criação de uma tabela chamada CIDADE, conforme a Listagem 1.

Listagem 1. Criação de tabela e utilização dos operadores OFFSET e FETCH NEXT.

--Criação da tabela CIDADE
  CREATE TABLE Cidade (
  ID int PRIMARY KEY,
  NOME varchar(30),
  UF char(2))
   
  --Inserção de valores para exemplos
  INSERT INTO Cidade VALUES (1, 'Porto Alegre', 'RS')
  INSERT INTO Cidade VALUES (2, 'São Paulo', 'SP')
  INSERT INTO Cidade VALUES (4, 'Aracaju', 'SE')
  INSERT INTO Cidade VALUES (5, 'Florianópolis', 'SC')
  INSERT INTO Cidade VALUES (8, 'Gramado', 'RS')
  INSERT INTO Cidade VALUES (9, 'Rio de Janeiro', 'RJ')
  INSERT INTO Cidade VALUES (6, 'Guarulhos', 'SP')
  INSERT INTO Cidade VALUES (3, 'Natal', 'RN')
   
  --Lista todos os dados ordenados por UF
  SELECT ID, NOME, UF
  FROM Cidade
  ORDER BY UF
   
  --Utilizando os operadores OFFSET e FETCH NEXT
  SELECT ID, NOME, UF
  FROM Cidade
  ORDER BY UF
         OFFSET 2 ROWS
         FETCH NEXT 3 ROWS ONLY 

O resultado das consultas pode ser analisado, respectivamente, nas Tabelas 1 e 2.

ID

NOME

UF

9

...

Quer ler esse conteúdo completo? Tenha acesso completo