Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
•1 SQL •1 Índices � Índices é maneira muito comum de melhorar a performance do banco de dados. Um índice permite ao servidor de banco de dados encontrar e retornar linhas específicas mais rapidamente do que sem índices. Mas índices também podem sobrecarregar o sistema de banco de dados, portanto deve ser usado com cuidado •2 •2 Índices � Índice primário � A chave especifica qual registro possui aquela chave e aponta para este registro � Índice secundário � Índice cuja chave não pertence a chave primária � A entrada aponta para todos os registros que contém aquele valor de chave X •3 Índices � Sugestões � A coluna é frequentemente utilizada na cláusula where � Para as FOREIGN KEYS, pois estão geralmente envolvidas em JOINS � Para as PRIMARY KEYS e UNIQUE KEYS normalmente o SGBD cria automaticamente um índice � Observações � Não é permitida a alteração de índices � Normalmente, a decisão de utilizar um índice ou não é do sistema, não do usuário •4 •3 Tipos de Índices � A grande maioria dos bancos oferecem pelo menos duas implementações para os índices � B-Trees � Hashing � Onde as B-Trees são mais comumente utilizadas como estruturas que armazenam os índices •5 B-Tree � Definição � Árvore de busca de ordem N � A raiz possui no mínimo 2 filhos � Cada folha possui no mínimo (n-1)/2 valores de chave � Cada nó interior possui no mínimo n/2 filhos � Todos os ramos tem o mesmo comprimento •6 •4 B-Tree •7 B-Tree •8 •5 B-Tree � Trabalha com consultas de igualdade ou comparação em dados que podem estar ordenados em qualquer ordem. O otimizados de consultas da maioria dos SGBDs usam o índice B-Tree nos campos onde foram criados quando há um destes operadores: � < � <= � = � >= � > •9 B-Tree � Outras construções que são equivalentes aos operadores lógicos como BETWEEN e IN também fazem uso de índices B-Tree nas consultas realizadas. (Porém, dependendo do SGBD, a comparação IS NULL não é equivalente a = NULL portanto não utilizaria a estrutura de índices B-Tree) •10 •6 B-Tree � Consultas que envolvem busca por padrões como o operador LIKE quando o padrão é uma constante e é buscado só como início da string (Ex: nome LIKE ‘Luiz%’) também utiliza do índice para acelerar a consulta. Porém qualquer coisa fora deste padrão não utiliza índices. Ex: � nome LIKE ‘%a%’ OR nome LIKE ‘pe%’ •11 Índice Hashing � São usados pelo otimizador de consultas somente em condições de igualdade (operador =) � Não é muito utilizado pois a princípio é mais lento que os indíces em B-Tree e em alguns bancos de dados, após alguma queda do servidor por exemplo, eles precisam ser reindexados � CREATE INDEX name ON table USING hash (column); (PostgreSQL) •12 •7 Índice UNIQUE � Índices UNIQUE podem ser utilizados para forçar que uma determinada coluna ou combinação de colunas terão valores únicos assim como a constraint UNIQUE •13 Índice UNIQUE � Quando um índice UNIQUE é criado, múltiplas linhas que contenham valores duplicados para a coluna(s) do índice criado não são permitidas. A maioria dos SGBDs como PostgreSQL cria automaticamente índices para chaves primárias e colunas UNIQUE definidas através de constraint por isto é importante definir esta situação por constraint e não criação de índices manualmente pois pode haver duplicação de informação •14 •8 Comando INSERT � Adiciona novas linhas a tabela requerida � Se as colunas não forem especificadas, o comando assume as colunas na ordem de criação das tabelas devendo assim ser informados tantos valores quantas forem as colunas da tabela •15 Comando INSERT � Considere a tabela abaixo: •16 •9 Comando INSERT � O comando abaixo está correto? •17 Comando INSERT � O comando abaixo está correto? � Temos dois problemas, pois estão faltando 2 campos nos VALUES já que não foram especificados as colunas. O banco entende que os dados seriam inseridos na ordem das colunas que foram criadas •18 •10 Comando INSERT � O comando abaixo está correto? •19 Comando INSERT � O comando abaixo está correto? •20 •11 Comando INSERT � Quando omitimos alguma coluna como fizemos comando anterior omitindo a coluna registro e habilitação o SGBD tenta assumir para essas colunas o valor DEFAULT caso ele tenha sido definido OU tenta inserir NULL. Porém, o NULL depende da obrigatoriedade definida ao se criar a tabela, pois se for obrigatória o valor da coluna, o comando não será executado com sucesso •21 Comando INSERT � O comando abaixo está correto? •22 •12 Comando INSERT � Na maioria dos SGBDs comerciais é possível fazer inserções utilizando como entrada retornos de uma consulta que foi realizada. Alguns bancos aceitam que e em único comando INSERT possam ser inseridos vários dados de uma vez como o PostgreSQL porém isso depende de implementação do SGBD •23 Comando INSERT •24 •13 Comando UPDATE � O objetivo é atualizar um registro ou um conjunto de registros nas colunas indicadas no comando que satisfazem as condições estabelecidas na cláusula WHERE recebendo os novos valores que são passados ou até mesmo valores vindos de outras tabelas. Somente as colunas especificadas no comando são atualizadas •25 Comando UPDATE � Table � Qual tabela terão registros atualizados � Alias � Apelido que pode ser utilizado para se referenciar a tabela, porém qualquer campo abaixo vai ser referenciado por alias.nome_campo � Column � Qual coluna da tabela que terá os valores alterados •26 •14 Comando UPDATE � Expression � A expressão que será atribuída a coluna. Pode ser uma constante, pode ser o resultado de uma stored procedure desde que ela retorne um resultado compatível com o tipo de dados do campo, pode ser ainda o valor vindo de outro campo de outra tabela e até mesmo o valor do próprio campo sendo usado com alguma operação como operações aritméticas por exemplo � Fromlist � Assim como nas consultas (SELECTs), no comando UPDATE é possível trazer dados de outras tabelas para um possível join ou satisfazer alguma condição na cláusula WHERE •27 Comando UPDATE � Condition � Uma expressão que retorna um valor booleano. Somente os registros que atenderem a estas condições são afetados pelo UPDATE •28 •15 Comando UPDATE � Pode-se ainda atualizar linhas a partir de outra tabela •29 Comando UPDATE � Considere mais uma vez a estrutura •30 •16 Comando UPDATE � O que o comando abaixo realiza? •31 Comando UPDATE � É preciso sempre verificar atento as condições na cláusula WHERE pois qualquer erro pode representar uma atualização numa quantidade de registros muito grande ou até mesmo em toda a tabela causando um problema de última hora para voltar com as informações no seu estado anterior •32 •17 Comando UPDATE •33 Comando DELETE � Comando para excluir as linhas de uma tabela que satisfazem uma condição � É importante não confundir DELETE com DROP, o comando DROP destrói toda a estrutura inclusive os dados de uma tabela, enquanto o DELETE manipula dados de uma tabela, porém a estrutura sempre é mantida e nunca é afetada •34 •18 Comando DELETE •35 Sintaxe: Apaga um conjunto de linhas que satisfazem a condição indicada: Apaga todas as linhas da tabela Depto já que nenhuma condição foi indicada:
Compartilhar