Easy PDF Creator is professional software to create PDF. If you wish to remove this line, buy it now.

Tamanho: px
Começar a partir da página:

Download "Easy PDF Creator is professional software to create PDF. If you wish to remove this line, buy it now."

Transcrição

1 OTIMIZAÇÃO DE CONSULTAS SQL A BANCO DE DADOS FIREBIRD* Ricardo Moura Gimenez ** Orientador: Prof. Antonio Alfredo Lacerda.*** * Trabalho de Gaduação **Graduando em Tecnólogo em Processamento de Dados pela faculdade de Tecnologia de Americana *** Prof. Da Faculdade de Tecnologia de Americana do Curso de Processamento de Dados Resumo Este trabalho tratará de um assunto de extrema importância para qualquer aplicação que trabalhe com o banco de dados Firebird, que é a otimização de consultas. Será feita uma breve introdução sobre o banco de dados em questão e depois irá se aprofundar no tema do trabalho. Alguns assuntos abordados aqui servirão não só para o Firebird, mas para qualquer outro banco de dados SQL, pois a grande maioria usa índices e executam a pesquisa binária para efetuar a busca da informação solicitada. O trabalho estará dividido em duas partes principais, uma tratará da otimização feita pelo Firebird e a outra, de cuidados e dicas para os programadores usarem para que a consulta seja executada com um melhor desempenho. Palavras chaves: Firebird, Consultas SQL, Otimização de Consultas. Abstract This work will deal with a subject of extreme importance for any application that works with the data base Firebird, that is the optimization of queries. One brief introduction on the data base in question will be made and later it will go to go deep itself the subject of the work. Some boarded subjects will serve here not only for the Firebird, but for any another data base SQL, therefore the great majority uses indices and executes the binary research to effect the search of the requested information. The work will be divided in two main parts, one will deal with the optimization made for the Firebird and to another one, of cares and tips programmers to use them so that the consultation is executed with one better performance. Keywords: Firebird, Consultations SQL, Optimization of queries. 1 - Introdução Atualmente as maiorias das empresas possuem sistemas que gerenciam se não todos, pelo menos alguns processos internos, visando obter o maior número de informações no menor tempo possível. Devido a isso os SGBDs cliente/servidor evoluíram muito e hoje em dia podem manipular e obter um grande número de informações em pouco tempo. Isso é possível devido aos avanços dos hardwares e principalmente ao otimizador das consultas. No Firebird esse otimizador é muito inteligente e devido a isso, ele proporciona um bom desempenho ao banco de dados na obtenção das informações desejadas pelo programador. Serão abordados neste trabalho alguns processos utilizados pelo otimizador de consultas, para que com isso o programador possa entender e ajudá-lo a obter um melhor desempenho aproveitando-o ao máximo Sobre SGBD SGBD significa sistema gerenciador de banco de dados. Seus formato variam de versão para versão, mas são iguais em sua essência, ou seja, eles possuem comandos que praticamente sozinhos gerenciam os dados neles armazenados. Na atualidade existem vários SGBDs de qualidade rodando nos mais diversos tipos de arquiteturas. Dentre os principais destaco o próprio Firebird, Oracle, Interbase, MySQL, SQL Server dentre outros. Uma das vantagens deles é que dependendo de como foram planejados, podem assumir praticamente sozinhos o controle das informações passadas, validando-as e garantindo sua integridade, ficando a cargo da aplicação apenas inserir, atualizar, deletar e solicitar os dados. 2 - A otimização O banco de dados Firebird, como a maioria dos bancos de dados cliente/servidor, possui um otimizador de consultas que avalia a instrução SQL passada para o banco de dados e antes de realizar qualquer acesso para retornar

2 às informações, ele testa várias formas de executá-la para buscar um melhor desempenho e retornar as informações mais rapidamente. No processo de análise a parte mais importante e a que mais surte efeito sobre a consulta é a escolha que o motor de consulta faz para definir quais índices serão usados, se for possível usá-los. Um índice é de extrema importância para a consulta como será mostrado mais adiante. O otimizador existe, pois em consultas SQL os programadores não especificam como o banco de dados deverá agir para retornar as informações solicitadas, eles apenas informam o que desejam obter e fica a critério do otimizador definir como será feita a pesquisa no banco de dados. Existe também uma outra forma de se otimizar uma consulta que não depende diretamente do otimizador de consulta do Firebird, trata-se da forma que o programador desenvolveu o banco de dados (normalização) e também da forma que ele escreveu a consulta SQL, pois como será mostrado isto determina a utilização ou não de um índice pelo motor de otimização de consultas do Firebird Motivos para otimizar consultas Os bancos de dados nas empresas crescem muito rapidamente e com o tempo os relatórios que abriam em poucos segundos começam a demorar e a atrasar todo o processo produtivo da empresa. Com esse pensamento cabe ao programador desenvolver consultas de forma mais otimizada possível, visando a velocidade na obtenção das informações. O principal motivo para um programador desenvolver consultas otimizadas é para agradar seus clientes, pois eles desejam e necessitam das informações contidas no sistema no menor tempo possível. Um outro motivo seria na verdade uma conseqüência do desenvolvimento de consultas otimizadas, pois à medida que o programador se dedica mais ao desenvolvimento da consulta, ele começará a escrevê-la de forma mais clara possível e com padrões que seguirão em todas as consultas subseqüentes. Como as empresas estão cada vez mais dependentes dos dados manipulados e gerados pelos sistemas de informação, seria muito interessante que as empresas que desenvolvem software dedicassem uma atenção especial ao desenvolvimento de relatórios, pois em sua maioria, eles têm origem de dados obtidos através de consultas SQL. Quem acessará a maior parte das informações geradas pelo sistema serão os diretores e executivos das empresas que por sua vez as usará para tomar decisões quanto a empresa. Gerando essas informações de forma rápida e segura, com certeza os clientes ficarão satisfeitos e consequentemente não pensarão em trocar de software. O Firebird assim como diversos outros bancos de dados cliente/servidor, possui um otimizador de consultas onde sempre que for passada uma instrução SQL para a obtenção de informação ele tentará refazê-la para obter o melhor desempenho possível, para isso serão criados vários planos de execução da mesma consulta. 3 - Índices Basicamente um índice é a forma de ordenar uma tabela por uma determinada coluna de forma decrescente ou crescente. No Firebird os índices também têm a função de definir um campo como único em uma coluna da tabela. Devido ao fato de ter a capacidade de ordenar uma tabela por um determinado campo, os índices são de extrema importância para o desempenho do banco de dados. Mas devemos estudar bem antes de inserirmos um índice, pois da mesma forma que ele pode gerar um grande aumento do desempenho na obtenção de informações pelo servidor ele também pode atrapalhar gerando uma queda de velocidade nos momentos de inserir e deletar registros das tabelas. Um índice no Firebird funciona da seguinte forma: ao inserirmos um dado em uma tabela que possui um campo indexado, automaticamente o firebird grava em um arquivo interno a localização exata do registro na tabela ordenando pelo campo indexado de acordo com suas características, crescente ou decrescente. Quando for usar este campo em uma consulta, o firebird determinará de acordo com a necessidade se será preciso ou não usar o índice. Um exemplo simples seria uma tabela de produtos com as seguintes características: Tabela 1 - Cadastro de produtos Nome da tabela: PRODUTOS Campo CODIGO DESCRICAO COR Tipo INTEGER VARCHAR(40) INTEGER Para esta tabela foi criado um índice para o campo descrição, quando executamos a seguinte consulta: SELECT * FROM PRODUTOS WHERE DESCRIÇÃO LIKE MESA%

3 O Firebird fará uso do índice, pois com sua ajuda ele saberá aonde está o primeiro e o último registro ao qual ele deve retornar, não precisando percorrer todos os registros da tabela. Mas quando executamos a seguinte consulta: SELECT * FROM PRODUTOS WHERE DESCRIÇÃO LIKE %MESA% O Firebird não fará uso do índice que foi criado para o campo, pois de qualquer maneira ele terá que percorrer todos os registros da tabela. O otimizador de consultas do Firebird é quem faz a escolha de quando se deve e quando não se deve usar os índices, por isso antes de executar uma consulta ele faz uma análise e verifica se é melhor usar o índice ou não. Deve-se tomar cuidado ao inserir vários índices para uma tabela, pois sempre que for inserir ou deletar um registro o Firebird terá que atualizar também as informações referentes aos índices dos campos, isso afetará a velocidade de como esses processos serão executados de forma negativa 3.1 Exemplo da forma de pesquisa com uso e não uso de índices A seguir mostrarei um exemplo de uma tabela que não possui um índice e uma tabela que possui. Tabela 2 - Dados não indexados Cod Nome 125 Gabriela 336 Amauri 222 Elizeu 421 Maria v Nesta tabela se solicitarmos através de uma consulta o registro que possua o campo Cod igual a 222, o Firebird terá que percorrer todos os registros da tabela, pois não terá como saber se ainda existe outro com essa informação ou não. Agora será mostrada a mesma tabela, só que desta vez foi criado um índice para o campo Cod. Tabela 3 - Dados e índice da coluna Cod Cod Nome ÍndiceCod 125 Gabriela Amauri Elizeu Maria 421 Na Tabela 3, percebemos que existe uma coluna com o nome ÍndiceCod, ele representa o índice que foi criado para a coluna Cod. A coluna do índice possui os mesmos valores da coluna para a qual ele foi criado, só que eles ficam armazenados de forma ordenada e possuem uma referência, indicada pelas setas, que aponta para o registro referente a ele. Se executarmos a mesma consulta sobre esta tabela o sistema pesquisará o registro 222 de uma forma diferente e muito mais eficiente. Para encontrá-lo o sistema pesquisará na tabela de índice onde está o primeiro registro com o número 222, depois testará se o próximo registro também é o número 222, no caso quando fizer este processo ele constatará que o próximo é o número 336, com isso ele irá parar de pesquisar e retornará a linha solicitada sem precisar percorrer toda a tabela. 4 - Pesquisa binária A Pesquisa binária, também conhecida como B-Tree (árvore binária), é um método de pesquisa muito eficiente, seu desenvolvimento revolucionou e diminuiu em muito o tempo gasto para pesquisar um determinado valor em uma tabela de um banco de dados. Ela é usada por campos das tabelas que são indexados, ou seja, que possuem índices. O método de pesquisa binária não é exclusivo do Firebird e nem surgiu a partir dele, o desenvolvimento do algoritmo foi completado durante a década de 70 por vários matemáticos que pesquisavam uma forma de tornar as pesquisas a bancos de dados mais rápidas e eficientes. A principal vantagem da pesquisa binária é que ela não precisa percorrer todos os elementos de uma tabela para encontrar os registros desejados. A cada processo de pesquisa que ela efetua, metade dos dados é descartado, e com isso a pesquisa em gigantescas bases de dados se torna mais eficiente e rápida. O grande segredo da eficiência da pesquisa binária é a forma como ela armazena os índices. Ela faz uma espécie de cálculo com o valor a ser armazenado pelo banco de dados e guarda-o junto com os registros que possuem

4 o valor do cálculo parecido. Esse método é chamado de função hash e funciona da seguinte forma: é informado um dado para a função hash e ela retorna o "código" do valor passado. 4.1 Funcionamento da pesquisa binária Para explicar o funcionamento da pesquisa binária em um banco de dados a melhor maneira é demonstrar a partir de um exemplo. Vamos supor que em um banco de dados exista uma tabela chamada PRODUTOS, cuja chave primária é o campo ID_PRODUTO, como é uma chave primária automaticamente o campo também é um índice. Nesta tabela será preciso encontrar o registro cuja chave primária é igual a Para este exemplo considerarei que os registros contidos na tabela foram inseridos em seqüência a partir do número 1 e não houve nenhuma exclusão. Como este campo já está ordenado, o algoritmo de pesquisa binária dividirá a tabela em duas partes e verificará se o valor médio da tabela é igual ao valor que se deseja encontrar. Se for igual, a pesquisa termina e retorna o resultado para o usuário; mas no caso o registro que desejamos encontrar é o e o valor médio que será retornado pela função seria 5.000, então o algoritmo seguirá para a próxima etapa da pesquisa que é descartar os registros cujo campo ID_PRODUTO esteja entre e , pois como o campo é ordenado não existirá nenhum registro com o valor igual a nesta parte. Sobrarão registros e novamente será aplicado o algoritmo de pesquisa binária só que dessa vez apenas sobre os registros restantes. Novamente a tabela será dividida em duas partes e será verificado se o valor médio é igual ao valor que se deseja encontrar. Não encontrando o valor requisitado o algoritmo descartará metade dos registros e aplicará o algoritmo novamente na metade restante dos registros. Esse processo se repetirá até ser encontrado o registro desejado. Neste exemplo fica fácil de observar a grande eficiência deste método em base de dados gigantes, pois em uma tabela que possua de registros, o algoritmo precisaria de no máximo 20 iterações para encontrar o registro selecionado. Enquanto que, se a pesquisa fosse feita apenas pelo uso de índices, seria necessário percorrer a tabela até encontrar a localização do registro específico. 5 - Otimização da consulta realizada pelo Firebird Esta é a parte principal no que diz respeito ao desempenho do banco de dados. Neste ponto serão executados alguns processos que visam tornar a consulta mais eficiente e consequentemente ser executada mais rapidamente. Após receber uma consulta o Firebird desenvolve uma ou mais formas de executar a mesma, que são chamadas de planos de execução ou simplesmente PLAN. Depois de gerado um PLAN, o Firebird calcula o custo de execução dele. Para calcular este custo, é levado em conta o tempo de processamento, o tempo de acesso aos dados no disco e a quantidade de acessos realizados ao disco. Os dados referentes a essas informações ficam armazenados no dicionário de dados do banco de dados. Se o custo do PLAN elaborado pelo banco for muito ruim, ele vai fazer todo processo novamente elaborando desta vez um plano de pesquisa diferente. Isto se repetirá até que seja desenvolvido um plano considerado eficiente pelo Firebird. Se a consulta for submetida a várias otimizações e mesmo assim não obter um plano de execução bom, a consulta será executada sem nenhuma otimização e este plano será chamado de NATURAL PLAN, nesses casos não será usado nenhum índice na pesquisa. 5.1 Etapas de uma consulta Como visto anteriormente, uma consulta não é executada logo após que é enviada para o servidor, antes disso existe três processos que são executados pelo Firebird antes de retornar as informações: Primeiramente quando enviamos uma consulta para o banco de dados ela passará pelo analisador e tradutor. Neste processo será verificada a sintaxe da consulta, se for encontrado algum erro o processo é interrompido e o sistema informará o erro ao programador. Se nenhum erro for encontrado, a consulta é transformada em uma expressão algébrica relacional e será enviada para o próximo processo. O próximo processo é a otimização que definirá o melhor plano de execução da consulta, como citado anteriormente. Definido o plano de consulta, ele é enviado para o motor de busca do banco de dados que usará seu algoritmo de pesquisa para retornar os dados encontrados Estrutura de uma consulta Basicamente podemos dizer que uma consulta em um banco de dados consiste em obter alguma informação de uma ou mais tabelas. Com essa breve explicação ficou clara a importância das consultas para qualquer sistema que use um banco de dados, pois todo acesso a ele feito pela aplicação, seja para mostrar informações do banco de dados em grids ou gerar relatórios, é feito através de consultas. Abaixo segue um exemplo bem simples de uma consulta com a sintaxe usada pelo Firebird. SELECT TABELA1.CAMPO1 FROM TABELA1

5 Esta é a menor consulta possível de se fazer em um banco de dados Firebird, pois ela precisa ter no mínimo uma tabela de onde será obtida a informação e retornar pelo menos um campo para quem a requisitou. O campo retornado por ela fica logo abaixo do select, no caso o campo1 pertencente a tabela1. Dificilmente em uma aplicação serão usadas apenas consultas deste tipo, com certeza haverá a necessidade de construir consultas mais elaboradas ligando várias tabelas e condicionando os resultados retornados de acordo com a necessidade. Mais adiante mostrarei alguns operadores de junções, agrupamentos e cláusulas usadas para filtrar informações. Nestas consultas mais complexas é que o programador sentirá a importância do otimizador de consultas do Firebird, pois verá que de acordo como ele montar, o Firebird executará com melhor ou pior desempenho. Devido a isso sentirá a necessidade de aperfeiçoar a consulta já que o usuário não é muito paciente e os dados que ela deverá manipular aumentará com o passar do tempo Operadores de junção Como o Firebird é um banco de dados relacional, os operadores de junção são de extrema importância para o aproveitamento de toda sua capacidade no gerenciamento de informações. Os operadores de junção servem para relacionar um ou mais campos de uma tabela com um ou mais campos de uma outra tabela. Um exemplo clássico de relacionamento entre tabelas é usado na relação entre Cidades e Estados. Ela nos mostra que existem duas tabelas com seus respectivos campos, onde existe um relacionamento entre o campo ID_ESTADO da tabela CIDADES com o campo ID_ESTADOS da tabela ESTADOS. Na tabela CIDADE ficará armazenado apenas o código do Estado que a cidade pertence desta forma diminui em muito o espaço utilizado pelo banco de dados para armazenar a informação, pois não precisa repetir para cada registro da tabela CIDADES as informações dos Estados, além de garantir a integridade da informação e garantir o banco de dados normalizado. Neste simples caso para unir as duas tabelas usa-se o operador de junção inner join da seguinte forma: SELECT A.CIDADE, B.SIGLA FROM CIDADES A INNER JOIN ESTADOS B ON B.ID_ESTADOS = A.ID_ESTADO Como resultado a consulta iria retornar o nome da cidade e a sigla do estado correspondente ao número armazenado no campo ID_ESTADO da tabela CIDADE. O operador de junção inner join relaciona as cidades que possuem algum Estado cadastrado, ou seja, se o campo ID_ESTADO da tabela CIDADES estiver nulo em um determinado registro, ele não será retornado. Para estes casos existe o operador left join que praticamente executa a mesma função do inner join com a diferença de retornar todos os registros da primeira tabela, que no caso do exemplo mostrado seria a tabela CIDADES, e retornar os registros da tabela ESTADOS em que houver relacionamento. A forma como o Firebird trata o inner join é completamente diferente da forma como trata o left join. Internamente ele executa de forma mais rápida os relacionamentos inner join do que os relacionamentos left join. Executando a consulta com o inner join, o motor de pesquisa guarda em memória todos os registros da primeira tabela em que o campo onde está ocorrendo o relacionamento não for nulo; porque se for, o registro será automaticamente excluído da seleção, pois ele não faz relacionamento entre um campo com valor nulo com um outro campo com o valor nulo. Depois ele fará o relacionamento entre as duas tabelas onde o campo de ligação for igual. Já se for executar a consulta usando o left join, o Firebird listará todos os registros da tabela um e posteriormente tentará ligar o registro selecionado com o respectivo registro da tabela relacionada. Mesmo que não houver relacionamento todos os dados da tabela um serão mostrados. Seguindo o exemplo que ilustra o relacionamento entre tabelas, percebe-se que o campo ID_ESTADO da tabela CIDADES é um grande candidato a receber um índice se não for feito um relacionamento de chave estrangeira, pois nesse caso como já havia dito o Firebird cria o índice automaticamente. Este campo sendo indexado aumentaria em muito o desempenho de consultas que usassem este relacionamento, pois o motor de pesquisa iria utilizá-lo para relacionar as duas tabelas Cláusula where Basicamente o where funciona para filtrar registros de uma consulta. Existem duas formas de condicionar os registros retornados pela tabela, uma é pela cláusula where e a outra é pela cláusula having. A diferença básica entre as duas é que o where é usado para campos que não estejam agrupados enquanto que o having é usado para campos agrupados. Um exemplo de consulta simples com o where seria o seguinte: SELECT TABELA1.CAMPO1 FROM TABELA1 WHERE TABELA1.CAMPO1 < 100 Neste simples exemplo, como resultado, obteríamos todos os registros da coluna CAMPO1 da tabela TABELA1 onde seu valor for menor que 100.

6 O otimizador de pesquisa do Firebird tentará sempre utilizar índices dos campos testados na cláusula. Se houver algum é interessante criar índices para campos usados nessas condições. No exemplo acima, se a coluna CAMPO1 da tabela TABELA1 possuísse um índice, este seria usado e diminuiria o tempo gasto na pesquisa. Indexando a coluna CAMPO1 no exemplo, o sistema de pesquisa do Firebird iria economizar tempo, pois iria percorrer em seqüência todos os registros da coluna CAMPO1 até quando este for menor que 100. Quando encontrar algum campo com o valor igual a 100 ele não irá percorrer o restante dos registros. Se o mesmo campo não for indexado, o motor de consulta terá que percorrer todos os registros do banco de dados testando se o campo é menor que 100. O otimizador de consultas do Firebird consegue executar com maior velocidade condições que usem IN ao invés de OR, portanto em alguns casos onde for possível, devemos substituir o OR pelo IN. Exemplo: WHERE TABELA1.CAMPO1 = 1 OR TABELA1.CAMPO1 = 2 seria o mesmo que escrever: WHERE TABELA1.CAMPO1 IN (1,2) A parte sobre junções (join) tratada anteriormente pode ser considerada um where com mais opções de agregações. Digo isso, pois o relacionamento entre duas tabelas também pode ser escrito pelo where da consulta, só que com menos flexibilidade. Exemplificando, as duas consultas gerarão os mesmos resultados: Consulta 1 SELECT TABELA1.CAMPO1 FROM TABELA1 INNER JOIN TABELA2 ON TABELA2.ID = TABELA1.ID Consulta 2 SELECT TABELA1.CAMPO1 FROM TABELA1, TABELA2 WHERE TABELA1.ID = TABELA2.ID Preferencialmente devem ser usados relacionamentos com join, pois ele é executado com maior velocidade pelo motor de consulta do Firebird e também possui mais recursos que a ligação entre tabelas no where. Um relacionamento do tipo left join não poderia ser conseguido utilizando a ligação no where. Uma regra geral para campos onde são usados frequentemente cláusulas where em várias consultas, é tornálos indexados e estudar se será melhor criar um índice ascendente, descendente ou em alguns casos criar dois índices dos dois tipos para um mesmo campo. 5.3 Seletividade de um índice Em consultas onde existem várias condições para serem testadas, o Firebird primeiro analisa qual será a ordem em que os dados deverão ser filtrados. Esta ordem é estabelecida de acordo com a seletividade do índice e esta informação fica armazenada no dicionário de dados do SGBD. A ordem de execução dos filtros é importante, pois pode reduzir a quantidade de registros a serem filtrados nas próximas condições a serem testadas. Explicarei melhor no seguinte exemplo: Em uma tabela existem registros e preciso selecionar os registros em que o valor da coluna A seja maior que 20 e o valor da coluna B sejam = 3. Considere que as colunas A e B possuem índices. Através de estatísticas armazenadas internamente, o Firebird sabe que para essa tabela a quantidade de registros que satisfazem a primeira condição é de aproximadamente e a quantidade que registros que satisfazem a segunda condição é de aproximadamente 200. Com essa informação o otimizador de consulta executará primeiro a segunda condição, pois ela retornará aproximadamente 200 registros e apenas estes serão testados pela segunda condição. 6 - Otimização por parte do programador Primeiramente devo destacar que o programador deve tentar melhorar o desempenho de uma consulta apenas quando ela realmente estiver lenta, caso contrário é melhor deixá-la como esta, pois será difícil torná-la mais rápida. Grande parte da otimização de uma consulta é feita automaticamente pelo Firebird, que analisa a melhor forma de executá-la. Este processo em si não necessita diretamente do programador, mas ele não precisa ficar apenas na dependência do otimizador de consultas do Firebird para tornar as consultas mais eficientes e rápidas. No desenvolvimento de uma consulta, vários pontos determinantes para um bom desempenho da mesma, dependem única e exclusivamente dele. A seguir abordarei alguns cuidados que deverão ser tomados pelo programador para um bom desempenho da consulta no servidor.

7 6.1 - Utilização excessiva de parâmetros Um ponto que compromete em muito a velocidade de uma consulta é o excesso de parâmetros de filtragem dos dados. A cada coluna da linha da tabela formada o processador da consulta terá que checar todos os parâmetros para saber se deverá retornar ou não a linha para o resultado. Além de utilizar apenas os parâmetros necessários devemos procurar parâmetros que utilizem os índices das tabelas. Usando técnicas explicadas anteriormente Retornar apenas dados necessários Como o Firebird é um banco de dados cliente/servidor, deduz-se que ele será usado para este propósito em uma rede com vários computadores interligados entre si. Por isso devemos estudar bem quais campos deverão ser retornados na consulta. Em uma tabela geralmente existem vários campos e na maioria das consultas não será necessário a obtenção de todos eles, então devemos estudar bem o propósito dela para retornar o mínimo de campos possíveis. O desenvolvedor da consulta deverá utilizar ao mínimo em um select o caractere " * ". Visto que este retorna todos os campos da tabela, ele deverá ser utilizado em caso de extrema necessidade, pois o correto e mais eficiente é retornar apenas os campos que serão utilizados. Esta é uma parte muito importante para a qualidade de uma consulta, pois feita corretamente reduz o tráfego de informação pela rede e não sobrecarrega o cache do servidor com informações desnecessárias Analisar os índices das tabelas Devemos sempre analisar as tabelas antes de desenvolver a consulta visando sempre saber quais campos são indexados, pois utilizando-os corretamente a consulta se tornará mais eficiente e consequentemente será executada com mais rapidez. Se algum campo for usado constantemente para filtrar ou ordenar dados em uma consulta e este não for indexado, devemos estudar a viabilidade de criar um índice para ele, observando que não devemos criar índices para todos os campos, pois como já havia abordado anteriormente, em uma tabela com vários índices os processos de inserir, atualizar e deletar os dados serão mais demorados para serem executados Tentar usar stored procedures ou views O acesso aos dados a partir de uma stored procedure ou uma view é muito mais rápido do que a recuperação a partir de uma consulta SQL simples. Isto ocorre pelo fato de que toda vez que uma consulta SQL é enviada para o servidor, ele tem que analisar e checar se existe algum erro de sintaxe, já nas stored procedures e VIEWs isto não ocorre, pois quando a criamos o servidor executa uma espécie de compilação em que valida-as e salva-as. Se nesse processo for encontrado algum erro ele será retornado para o programador e ela não será salva Evite usar sub-selects Os sub-selects são consultas que são processadas dentro de uma outra consulta. Sua utilização deverá ser evitada ao máximo, sendo utilizado apenas em casos de extrema necessidade quando não houver alternativa. Exemplo: SELECT A.ID_PRODUTO, A.DESCRICAO FROM PRODUTO A WHERE A.ID_PRODUTO IN (SELECT W1.ID_PRODUTO FROM PRODUTO W1 WHERE W1.ID_PRODUTO > 30) Este é um exemplo apenas para entender o funcionamento de um sub-select. Neste sub-select para cada linha da tabela produto ele irá executar o select que está no where e testar se o ID_PRODUTO consta na relação de registros retornados por ele. Desta forma a consulta se tornará muito custosa para o servidor Planejar a estrutura do banco de dados Para a obtenção rápida das informações de um banco de dados devemos planejá-lo bem antes de desenvolvê-lo seguindo as regras de normalização. É recomendado que no processo de criação de uma tabela seja utilizada apenas uma chave primária, preferencialmente uma do tipo inteiro (integer no Firebird). A utilização de chaves compostas em uma tabela torna a consulta mais lenta e consequentemente menos eficiente, pois quando a tabela se relacionar com uma outra tabela terá que ser feito mais que uma comparação com a tabela relacionada para checar se o relacionamento realmente existe Usar UDFs apenas quando não tiver outra solução UDFs são dll's que contém funções escritas em alguma outra linguagem seguindo alguns padrões de programação estabelecidos pelo Firebird que podem ser utilizadas no banco de dados em consultas, strored

8 procedures, triggers e viwes. Como é uma dll, a lógica dela não fica armazenada no banco de dados e sim em um arquivo que deverá ser instalada na pasta de udf s do diretório de instalação do servidor Firebird. Como fica armazenada fora do banco, sua utilização faz com que o banco acesse externamente a função desejada. Este processo ocorre mais lentamente do que usar funções nativas do Firebird Reconstrução de índices Com o passar do tempo os índices do banco de dados vão ficando desbalanceados e consequentemente a performance das consultas que os usam vão ficando cada vez pior. Para evitar este problema o programador deve de tempo em tempo fazer uma reconstrução dos índices do banco de dados, pois no processo de recriação dos índices o Firebird os balanceia. Existem duas formas de fazer a reconstrução, a primeira é tornar o índice inativo e depois torna-lo ativo, a segunda forma é fazer um backup do banco de dados e depois fazer um restore do mesmo. Conclusão A otimização de consultas é fundamental para qualquer banco de dados, pois sem este processo ficaria a cargo apenas do programador o aprimoramento da mesma. Devido ao fato de que em consultas SQL o programador não informa os procedimentos que deverão ser, e sim as informações que se deseja obter, fica a cargo do otimizador escolher a melhor forma de executá-la. Com isso fica clara sua extrema importância dentro da aplicação. O processo de otimização realizado pelo Firebird é extremamente complexo e requer muito estudo para aproveitar todo seu potencial. Existem algumas funções que não foram abordadas neste trabalho como agrupamentos, criação de índices com mais de um campo, dentre outros. Sugiro estes temas para quem queira aprofundar-se mais no assunto ou para serem trabalhados futuramente. Referências Bibliográficas BLUMM, César e FORNARI, Miguel Rodrigues. Dúvidas freqüentes de bancos de dados. SQL Magazine.Rio de Janeiro: Edição 28, ano 3, p CANTU, Carlos Henrique. Principais características e recursos do Interbase/Firebird!. Firebase. Disponível em: Acesso em: 06 fev Firebird 1.0. Firebase. Disponível em: Acesso em: 06 de fev [CAN05] Carlos Henrique Cantu. Firebird Essencial. Editora Ciência Moderna Ltda., COCCO, Adriana Pereira. A linguagem SQL. Unicruz. Disponível em: - Acesso em: 15 mar Entendendo as estruturas B-Tree. Firebase. Disponível em: Acesso em: 14 abr HARRISON, Ann. Firbird Expert Índices. Firebase. Disponível em: - Acesso em: 08 mai Notas da Versão 1.5 e 2.0 do Firebird. Ibphoenix. Disponível junto com o instalador do banco de dados e através do site: Pesquisa Binária. Wikipédia. Disponível em: Acesso em: 03 abr SANTOS, Luiz Paulo de Oliveira, Desvendando o select. DBFree Magazine. Revista digital, ano 1 edição número 002, p SANTANA, Gladiston. Firebird e seus PLANos de otimização. Linha de Código. Disponível em: Acesso em: 16 jan STUNTZ, Craig. Optimization II: Optimizing InterBase SQL and Metadata. Disponível em: - Acessado em: 29 de abr Optimization I: Optimizing InterBase SQL and Metadata. Disponível em: - Acessado em: 29 de abr

Treinamento sobre SQL

Treinamento sobre SQL Treinamento sobre SQL Como Usar o SQL Os dois programas que você mais utilizara no SQL Server são: Enterprise Manager e Query Analyzer. No Enterprise Manager, você pode visualizar e fazer alterações na

Leia mais

NOME SEXO CPF NASCIMENTO SALARIO

NOME SEXO CPF NASCIMENTO SALARIO Tutorial SQL Fonte: http://www.devmedia.com.br/articles/viewcomp.asp?comp=2973 Para começar Os Sistemas Gerenciadores de Bancos de Dados Relacionais (SGBDr) são o principal mecanismo de suporte ao armazenamento

Leia mais

Junções e Índices em Tabelas

Junções e Índices em Tabelas Junções e Índices em Tabelas Prof. Fernanda Baião fernanda.baiao@uniriotec.com.br SGBD Considerados MySQL (http://www.mysql.org) SGBD gratuito e simples, sem muitos recursos avançados Fácil de instalar

Leia mais

Integridade dos Dados

Integridade dos Dados 1 Integridade dos Dados Integridade dos Dados Melissa Lemos melissa@inf.puc-rio.br A integridade dos dados é feita através de restrições, que são condições obrigatórias impostas pelo modelo. Restrições

Leia mais

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar

Leia mais

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Manipulação de Dados Banco de Dados SQL DML SELECT... FROM... WHERE... lista atributos de uma ou mais tabelas de acordo com alguma condição INSERT INTO... insere dados em uma tabela DELETE

Leia mais

SQL Structured Query Language

SQL Structured Query Language Janai Maciel SQL Structured Query Language (Banco de Dados) Conceitos de Linguagens de Programação 2013.2 Structured Query Language ( Linguagem de Consulta Estruturada ) Conceito: É a linguagem de pesquisa

Leia mais

Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01

Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01 Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01 1 1- Bancos de dados compreendem desde agendas telefônicas até sistemas computadorizados. (Sim) 2- Só podemos instalar o SQL Server Express se tivermos

Leia mais

Banco de Dados I 2007. Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli

Banco de Dados I 2007. Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli Banco de Dados I 2007 Módulo V: Indexação em Banco de Dados (Aulas 4) Clodis Boscarioli Agenda: Indexação em SQL; Vantagens e Custo dos Índices; Indexação no PostgreSQL; Dicas Práticas. Índice em SQL Sintaxe:

Leia mais

Linguagem de Consulta Estruturada SQL- DML

Linguagem de Consulta Estruturada SQL- DML Linguagem de Consulta Estruturada SQL- DML INTRODUÇÃO A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation

Leia mais

Comandos de Manipulação

Comandos de Manipulação SQL - Avançado Inserção de dados; Atualização de dados; Remoção de dados; Projeção; Seleção; Junções; Operadores: aritméticos, de comparação,de agregação e lógicos; Outros comandos relacionados. SQL SQL

Leia mais

Introdução a Banco de Dados

Introdução a Banco de Dados Introdução a Banco de Dados Ricardo Henrique Tassi - Departamento de Replicação Índice 1- Introdução... 03 2- Quais são os bancos de dados mais conhecidos hoje em dia...04 3- Quais são os tipos de banco...05

Leia mais

Tuning em queries em Banco de Dados

Tuning em queries em Banco de Dados Tuning em queries em Banco de Dados Alison K. L. Leite 1, Izabella C. A. M. S. Bosco 1, Juliana M. Massoni 1, Patrícia B. Ribeiro 1 1 Curso de Tecnologia em Banco de Dados - Faculdade de Tecnologia de

Leia mais

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1 IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1 Banco de Dados Fundamentos de SQL Structured Query Language Aula2 Apresentado por: Robson do Nascimento Fidalgo rdnf@cin.ufpe.br IF685

Leia mais

Prof. Marcelo Machado Cunha www.marcelomachado.com mcelobr@yahoo.com.br

Prof. Marcelo Machado Cunha www.marcelomachado.com mcelobr@yahoo.com.br Prof. Marcelo Machado Cunha www.marcelomachado.com mcelobr@yahoo.com.br Ementa Introdução a Banco de Dados (Conceito, propriedades), Arquivos de dados x Bancos de dados, Profissionais de Banco de dados,

Leia mais

Operação de União JOIN

Operação de União JOIN Operação de União JOIN Professor Victor Sotero SGD 1 JOIN O join é uma operação de multi-tabelas Select: o nome da coluna deve ser precedido pelo nome da tabela, se mais de uma coluna na tabela especificada

Leia mais

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Introdução à Banco de Dados. Nathalia Sautchuk Patrício Introdução à Banco de Dados Nathalia Sautchuk Patrício Histórico Início da computação: dados guardados em arquivos de texto Problemas nesse modelo: redundância não-controlada de dados aplicações devem

Leia mais

Unidade 5 Armazenamento e Indexação

Unidade 5 Armazenamento e Indexação Unidade 5 Armazenamento e Indexação Engenharia de Computação / Engenharia de Produção Banco de Dados Prof. Maria das Graças da Silva Teixeira Material base: Banco de Dados, 2009.2, prof. Otacílio José

Leia mais

Tarefa Orientada 13 Agrupamento e sumário de dados

Tarefa Orientada 13 Agrupamento e sumário de dados Tarefa Orientada 13 Agrupamento e sumário de dados Objectivos: Funções de agregação Agrupamento e sumário de dados Funções de agregação Nesta tarefa orientada iremos formular consultas que sumariam os

Leia mais

LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS

LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS LINGUAGEM SQL PARA CSULTAS EM MICROSOFT ACCESS Objetivos: Neste tutorial serão apresentados os principais elementos da linguagem SQL (Structured Query Language). Serão apresentados diversos exemplos práticos

Leia mais

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza PHP e Banco de Dados progweb2@thiagomiranda.net Conteúdos Os materiais de aula, apostilas e outras informações estarão disponíveis em: www.thiagomiranda.net PHP e Banco de Dados É praticamente impossível

Leia mais

1. SQL Instrumental...2 1.1 Select...3 1.2 Delete...13 1.3 Update... 1.4 Insert... 1.5 Group by... 1.6 Having... 1.7 Unnion All...

1. SQL Instrumental...2 1.1 Select...3 1.2 Delete...13 1.3 Update... 1.4 Insert... 1.5 Group by... 1.6 Having... 1.7 Unnion All... SQL 1. SQL Instrumental...2 1.1 Select...3 1.2 Delete...13 1.3 Update... 1.4 Insert... 1.5 Group by... 1.6 Having... 1.7 Unnion All... 2. Servidor... 2.1 Ativando log no Broker... 2.2 Leitura do log no

Leia mais

Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico

Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico Editora Carlos A. J. Oliviero Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico Orientado por Projeto 1a Edição 2 Reimpressão São Paulo 2011 Érica Ltda. Noções Livrarse Preparação muitas muita Sumário

Leia mais

LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS

LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS LINGUAGEM SQL PARA CSULTAS EM MICROSOFT ACCESS Objetivos: Neste tutorial serão apresentados os principais elementos da linguagem SQL (Structured Query Language). Serão apresentados diversos exemplos práticos

Leia mais

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL Carga horária: 32 Horas Pré-requisito: Para que os alunos possam aproveitar este treinamento ao máximo, é importante que eles tenham participado dos treinamentos

Leia mais

Tarefa Orientada 14 Subconsultas

Tarefa Orientada 14 Subconsultas Tarefa Orientada 14 Subconsultas Objectivos: Subconsultas não correlacionadas Operadores ALL, SOME e ANY Subconsultas correlacionadas Operador EXISTS Subconsultas incluídas na cláusula FROM de uma consulta

Leia mais

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela Certamente você já ouviu falar muito sobre triggers. Mas o quê são triggers? Quando e como utilizá-las?

Leia mais

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida UFCD 787 Administração de base de dados Elsa Marisa S. Almeida 1 Objectivos Replicação de base de dados Gestão de transacções Cópias de segurança Importação e exportação de dados Elsa Marisa S. Almeida

Leia mais

UNISA Universidade de Santo Amaro. http://www.unisa.br. Material de Estudo. Módulo I: Básico Banco de dados SQL Server. http://www.unisa-sis.

UNISA Universidade de Santo Amaro. http://www.unisa.br. Material de Estudo. Módulo I: Básico Banco de dados SQL Server. http://www.unisa-sis. UNISA Universidade de Santo Amaro http://www.unisa.br Material de Estudo Módulo I: Básico Banco de dados SQL Server http://www.unisa-sis.info Junho/2010 Objetivo do Workshop Compartilhar e apresentar

Leia mais

Construção de Comandos SQL com boa performance

Construção de Comandos SQL com boa performance Construção de Comandos SQL com boa performance Em bancos de dados relacionais as informações são guardadas em tabelas. Para recuperar uma informação necessaria ao usuário, deve-se buscá-la em várias tabelas

Leia mais

Banco de Dados. Prof. Antonio

Banco de Dados. Prof. Antonio Banco de Dados Prof. Antonio SQL - Structured Query Language O que é SQL? A linguagem SQL (Structure query Language - Linguagem de Consulta Estruturada) é a linguagem padrão ANSI (American National Standards

Leia mais

Tarefa Orientada 16 Vistas

Tarefa Orientada 16 Vistas Tarefa Orientada 16 Vistas Objectivos: Vistas só de leitura Vistas de manipulação de dados Uma vista consiste numa instrução de SELECT que é armazenada como um objecto na base de dados. Deste modo, um

Leia mais

Introdução a Banco de Dados

Introdução a Banco de Dados Introdução a Banco de Dados O modelo relacional Marta Mattoso Sumário Introdução Motivação Serviços de um SGBD O Modelo Relacional As aplicações não convencionais O Modelo Orientado a Objetos Considerações

Leia mais

Principais Instruções em SQL

Principais Instruções em SQL Instrução Principais Instruções em SQL Instrui o programa principal do banco de dados para retornar a informação como um conjunto de registros. Sintaxe [predicado { * tabela.* [tabela.]campo1 [AS alias1]

Leia mais

Introdução ao SQL Avançado

Introdução ao SQL Avançado Introdução ao SQL Avançado Introdução as consultas, manipulação e a filtragem de dados com a linguagem SQL Prof. MSc. Hugo Vieira L. Souza Este documento está sujeito a copyright. Todos os direitos estão

Leia mais

Histórico de revisões

Histórico de revisões Apostila 3 Histórico de revisões Data Versão Descrição Autor 30/09/2011 1.0 Criação da primeira versão HEngholmJr CONTEÚDO Exclusão de registros Consultas por Dados de Resumo Group by / Having Funções

Leia mais

Android e Bancos de Dados

Android e Bancos de Dados (Usando o SQLite) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

Principais Instruções em SQL. Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados.

Principais Instruções em SQL. Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados. Principais Instruções em SQL Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados. Atenção: Esta apostila foi desenvolvida com o auxílio on-line do banco MS-ACCESS,

Leia mais

Introdução a Informática. Prof.: Roberto Franciscatto

Introdução a Informática. Prof.: Roberto Franciscatto Introdução a Informática Prof.: Roberto Franciscatto 6.1 ARQUIVOS E REGISTROS De um modo geral os dados estão organizados em arquivos. Define-se arquivo como um conjunto de informações referentes aos elementos

Leia mais

f. Vocês podem selecionar todos os campos indicando-os, ou seja, sem usar * (boa prática) g. Muito relevante na manutenção de BD e de aplicações.

f. Vocês podem selecionar todos os campos indicando-os, ou seja, sem usar * (boa prática) g. Muito relevante na manutenção de BD e de aplicações. Tecnologia em Análise e Desenvolvimento de Sistemas Disciplina: B1SGB - Sistemas Gerenciadores de Banco de Dados Memória de aula Aula 11 1) Cláusulas SELECT e FROM a. Apesar de ser a primeira, ela é a

Leia mais

Prof. Omero, pág. 63. Banco de Dados InterBase.

Prof. Omero, pág. 63. Banco de Dados InterBase. Prof. Omero, pág. 63 O que é o InterBase? O InterBase é um SGBDR - Sistema Gerenciador de Banco de Dados Cliente/Servidor Relacional 1 que está baseado no padrão SQL ANSI-9, de alta performance, independente

Leia mais

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 10 - PROCEDIMENTOS ARMAZENADOS - STORED PROCEDURES 1. INTRODUÇÃO Em muitas situações será necessário armazenar procedimentos escritos com a finalidade de se utilizar recursos como loop, estruturas

Leia mais

Thiago Hernandes de Souza

Thiago Hernandes de Souza Thiago Hernandes de Souza SQL Avançado e Teoria Relacional Copyright Editora Ciência Moderna Ltda., 2013 Todos os direitos para a língua portuguesa reservados pela EDITORA CIÊNCIA MODERNA LTDA. De acordo

Leia mais

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados SQL (Structured Querie Language) SQL é mais que uma linguagem de interrogação estruturada. Inclui características para a definição da estrutura de dados, para alterar os dados de uma base de dados, e para

Leia mais

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável. SQL (Structured Query Language) SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável. Além de permitir a realização de consultas, SQL possibilita: definição

Leia mais

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo ) PRONATEC - Programador de Sistemas Banco de Dados 1) Incluindo linhas nas tabelas a. Para incluir linhas em tabelas utilize o comando INSERT INTO INSERT INTO tabela [ ( coluna [, coluna,...] ) ] VALUES

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 03 AT03 Diversos II Page 1 of 25 Indice EXEMPLOS COM GROUP BY E COM A CLÁUSULA HAVING - TOTALIZANDO DADOS... 3 GROUP BY... 3 Cláusula HAVING com GROUP BY... 5 ENTENDENDO

Leia mais

FAPLAN - Faculdade Anhanguera Passo Fundo Gestão da Tecnologia da Informação Banco de Dados II Prof. Eder Pazinatto Stored Procedures Procedimento armazenados dentro do banco de dados Um Stored Procedure

Leia mais

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados LINGUAGEM SQL Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). Muitas das características

Leia mais

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

PROCEDIMENTOS ARMAZENADOS (Stored Procedures) PROCEDIMENTOS ARMAZENADOS (Stored Procedures) 1. Introdução Stored Procedure é um conjunto de comandos, ao qual é atribuído um nome. Este conjunto fica armazenado no Banco de Dados e pode ser chamado a

Leia mais

LINGUAGEM DE BANCO DE DADOS

LINGUAGEM DE BANCO DE DADOS LINGUAGEM DE BANCO DE DADOS Gabriela Trevisan Bacharel em Sistemas de Informação Universidade Federal do Rio Grande Pós-Graduanda Formação Pedagógica de Professores (FAQI) Conceito de BD Um banco de dados

Leia mais

SQL. Prof. Márcio Bueno. {bd2tarde,bd2noite}@marciobueno.com

SQL. Prof. Márcio Bueno. {bd2tarde,bd2noite}@marciobueno.com SQL Prof. Márcio Bueno {bd2tarde,bd2noite}@marciobueno.com Material dos professores Ana Carolina Salgado, Fernando Foncesa e Valéria Times (CIn/UFPE) SQL SQL - Structured Query Language Linguagem de Consulta

Leia mais

PL/SQL Developer. Solução para Ambiente de Desenvolvimento Integrado Oracle

PL/SQL Developer. Solução para Ambiente de Desenvolvimento Integrado Oracle Solução para Ambiente de Desenvolvimento Integrado Oracle PL/SQL Developer é um ambiente de desenvolvimento integrado (IDE) que foi especialmente destinado ao desenvolvimento de programas armazenados em

Leia mais

António Rocha Nuno Melo e Castro

António Rocha Nuno Melo e Castro António Rocha Nuno Melo e Castro SQL- Strutured Query Language é a linguagem mais usada nas bases dados relacionais. Originalmente desenvolvida pela IBM Actualmente é um standard, o mais recente é o SQL:2003

Leia mais

Structured Query Language (SQL)

Structured Query Language (SQL) SQL Histórico Structured Query Language (SQL) Foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation Language) para suas primeiras tentativas

Leia mais

Conectando Bancos de Dados Microsoft Access no BrOffice.org Base. fornecido pelo Projeto de Documentação do BrOffice.org

Conectando Bancos de Dados Microsoft Access no BrOffice.org Base. fornecido pelo Projeto de Documentação do BrOffice.org Conectando Bancos de Dados Microsoft Access no BrOffice.org Base fornecido pelo Projeto de Documentação do BrOffice.org Índice 1 Introdução...2 1.1 Versão... 2 1.2 Licenciamento...2 1.3 Mensagem do Projeto

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo ) Tecnologia em Análise e Desenvolvimento de Sistemas Disciplina: B1SGB - Sistemas Gerenciadores de Banco de Dados Memória de aula Aula 10 1) Incluindo linhas nas tabelas a. Para incluir linhas em tabelas

Leia mais

Sistema de Aprendizado de Linguagem de Acesso à Dados em um Simulador Compacto de Banco de Dados (Ferramenta Tupan)

Sistema de Aprendizado de Linguagem de Acesso à Dados em um Simulador Compacto de Banco de Dados (Ferramenta Tupan) Sistema de Aprendizado de Linguagem de Acesso à Dados em um Simulador Compacto de Banco de Dados (Ferramenta Tupan) Daniel, H. S. Atilio 1, Gabriel, C. Arroyo 1, Luis, A. da Silva 1 1 Curso de Tecnologia

Leia mais

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL 1. O que é Linguagem SQL 2. Instrução CREATE 3. CONSTRAINT 4. ALTER TABLE 5. RENAME TABLE 6. TRUCANTE TABLE 7. DROP TABLE 8. DROP DATABASE 1 1. O que é Linguagem SQL 2. O SQL (Structured Query Language)

Leia mais

2 Auto-sintonia de Bancos de Dados e Agentes de Software

2 Auto-sintonia de Bancos de Dados e Agentes de Software 2 Auto-sintonia de Bancos de Dados e Agentes de Software A uso da abordagem de agentes de software 1 pode trazer benefícios a áreas de aplicação em que é necessário construir sistemas autônomos, ou seja,

Leia mais

Processamento e Otimização de Consultas

Processamento e Otimização de Consultas Introdução Processamento e Banco de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM 1 Processamento

Leia mais

CE-240 ListEx 1. Lista de Exercícios 1. Relatório

CE-240 ListEx 1. Lista de Exercícios 1. Relatório CE-240 ListEx 1 Lista de Exercícios 1 Relatório Autor: Daniela América Da Silva Data: 10/04/2007 Versão 2.0 Página 1 de 5 1. Objetivo da Listex 1 Este relatório descreve a execução de operações básicas

Leia mais

Dicas de Projeto Lógico Relacional

Dicas de Projeto Lógico Relacional Dicas de Projeto Lógico Relacional O que deve ser especificado? mapeamento do esquema conceitual definição das tabelas e chaves justificativas de mapeamento (se necessário) restrições de integridade (RIs)

Leia mais

Memória de aula Semanas 15 e 16

Memória de aula Semanas 15 e 16 FMU Curso: Ciência da Computação Disciplina: Banco de Dados I Professor: Ecivaldo Matos Memória de aula Semanas 15 e 16 1) Incluindo linhas nas tabelas a. Para incluir linhas em tabelas utilize o comando

Leia mais

MODELO DE DADOS VS ESQUEMA

MODELO DE DADOS VS ESQUEMA MODELO DE DADOS VS ESQUEMA Um modelo de dados é um conjunto de conceitos usados para se descrever dados. Um esquema é uma descrição de uma determinada coleção de dados, descrição essa baseada num certo

Leia mais

Linguagem de Consulta Estruturada (SQL)

Linguagem de Consulta Estruturada (SQL) Linguagem de Consulta Estruturada (SQL) Conceitos sobre a versão ANSI da SQL, a sublinguagem de definição de dados (DDL) e a sublinguagem de manipulação de dados (DML) Prof. Flavio Augusto C. Correia 1

Leia mais

Pedro F. Carvalho OCP Oracle 2008.2 10g LINGUAGEM SQL. www.pedrofcarvalho.com.br contato@pedrofcarvalho.com.br São José do Rio Preto

Pedro F. Carvalho OCP Oracle 2008.2 10g LINGUAGEM SQL. www.pedrofcarvalho.com.br contato@pedrofcarvalho.com.br São José do Rio Preto Pedro F. Carvalho OCP Oracle 2008.2 10g LINGUAGEM SQL Objetivos Revisando a sintaxe SQL SELECT, UPDATE, INSERT, DELETE Manipulando expressões Funções matemáticas, etc Condições de Pesquisa Funções de Agregação

Leia mais

Manual do Usuário. Sistema Financeiro e Caixa

Manual do Usuário. Sistema Financeiro e Caixa Manual do Usuário Sistema Financeiro e Caixa - Lançamento de receitas, despesas, gastos, depósitos. - Contas a pagar e receber. - Emissão de cheque e Autorização de pagamentos/recibos. - Controla um ou

Leia mais

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br BANCO DE DADOS info 3º ano Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br Na última aula estudamos Unidade 4 - Projeto Lógico Normalização; Dicionário de Dados. Arquitetura

Leia mais

SQL. Structured Query Language

SQL. Structured Query Language SQL Structured Query Language Construções básicas Junção de Tabelas Join O uso da operação JOIN numa cláusula FROM especifica como se deseja que as tabelas sejam vinculadas. Use INNER JOIN para associar

Leia mais

PROGRAMA. Objectivos Gerais :

PROGRAMA. Objectivos Gerais : PROGRAMA ANO LECTIVO : 2005/2006 CURSO : ENGENHARIA MULTIMÉDIA ANO: 2.º DISCIPLINA : SISTEMA DE GESTÃO DE BASE DE DADOS DOCENTE RESPONSÁVEL PELA REGÊNCIA : Licenciado Lino Oliveira Objectivos Gerais :

Leia mais

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES w w w. i d e a l o g i c. c o m. b r INDICE 1.APRESENTAÇÃO 2.ESPECIFICAÇÃO DOS RECURSOS DO SOFTWARE SAXES 2.1. Funcionalidades comuns a outras ferramentas similares 2.2. Funcionalidades próprias do software

Leia mais

FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL

FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação. O Departamento de Pesquisas da IBM desenvolveu a SQL como forma de interface para

Leia mais

Otimizando o uso de conexões

Otimizando o uso de conexões Depois de implementar o aplicativo cliente/servidor, você poderá encontrar áreas em que gostaria de melhorar seu desempenho. Você pode ajustar o aplicativo para obter desempenho máximo, por exemplo, acelerando

Leia mais

Entendendo e balanceando índices Btree

Entendendo e balanceando índices Btree Entendendo e balanceando índices Btree Introdução O servidor de bancos de dados relacional Firebird, assim como a maioria dos servidores bancos de dados cliente/servidor do mercado, baseiam-se num algorítimo

Leia mais

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS CLAUDIO RIBEIRO DA SILVA MARÇO 1997 2 1 - CONCEITOS GERAIS DE 1.1 - Conceitos Banco de Dados - Representa

Leia mais

Prof. Daniela Barreiro Claro

Prof. Daniela Barreiro Claro Prof. Daniela Barreiro Claro SQL, SQL3 e OQL são linguagens declarativas O SGBD deve processar e otimizar estas consultas antes delas serem efetivamente executadas Uma consulta possui muitas estratégias

Leia mais

8VDQGRDVRSo}HVGH64/DYDQoDGRGR %URZVHGR&ODULRQ

8VDQGRDVRSo}HVGH64/DYDQoDGRGR %URZVHGR&ODULRQ 8VDQGRDVRSo}HVGH64/DYDQoDGRGR %URZVHGR&ODULRQ -XOLR&pVDU3HGURVR No Clarion 6 na janela %URZVH %R[ %HKDYLRU, uma nova guia foi adicionada, e tenho certeza, poucos programadores já fizeram uso dela, ou melhor,

Leia mais

Gerenciamento de um Sistema de

Gerenciamento de um Sistema de SBD Gerenciamento de um Sistema de Banco de Dados Prof. Michel Nobre Muza ua michel.muza@ifsc.edu.br Prof. Marcos Antonio Viana Nascimento Por que é importante: Motivação Participar na organização e no

Leia mais

Aula 5. Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com)

Aula 5. Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com) Persistência com JDBC e JPA Aula 5 Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com) Quem é sábio procura aprender, mas os tolos estão satisfeitos com a sua própria ignorância..

Leia mais

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Introdução à Engenharia da Computação. Banco de Dados Professor Machado Introdução à Engenharia da Computação Banco de Dados Professor Machado 1 Sistemas isolados Produção Vendas Compras Banco de Dados Produtos... Banco de Dados Produtos... Banco de Dados Produtos... Desvantagens:

Leia mais

Programação SQL. INTRODUÇÃO II parte

Programação SQL. INTRODUÇÃO II parte Programação SQL INTRODUÇÃO II parte Programação SQL SELECT; INSERT; UPDATE; DELETE. Este conjunto de comandos faz parte da sublinguagem denominada por DML Data Manipulation Language (Linguagem de manipulação

Leia mais

BANCO DE DADOS Parte 4

BANCO DE DADOS Parte 4 BANCO DE DADOS Parte 4 A Linguagem SQL Introdução Desenvolvida pelo depto de pesquisa da IBM na década de 1970 (System R) Linguagem padrão de BD Relacionais; Apresenta várias padrões evolutivos: SQL86,

Leia mais

CIÊNCIA E TECNOLOGIA DO RIO

CIÊNCIA E TECNOLOGIA DO RIO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE BANCO DE DADOS II Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br Curso de Tecnologia

Leia mais

SISTEMA DE BANCO DE DADOS. Banco e Modelagem de dados

SISTEMA DE BANCO DE DADOS. Banco e Modelagem de dados SISTEMA DE BANCO DE DADOS Banco e Modelagem de dados Sumário Conceitos/Autores chave... 3 1. Introdução... 4 2. Arquiteturas de um Sistema Gerenciador... 5 3. Componentes de um Sistema... 8 4. Vantagens

Leia mais

Banco de Dados. Professor: Rômulo César. romulodandrade@gmail.com www.romulocesar.com.br

Banco de Dados. Professor: Rômulo César. romulodandrade@gmail.com www.romulocesar.com.br Banco de Dados Professor: Rômulo César romulodandrade@gmail.com www.romulocesar.com.br Sistema de arquivos X Sistemas de Banco de Dados Sistema de arquivos Sistema de Banco de Dados Aplicativos Dados (arquivos)

Leia mais

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

Tarefa Orientada 12 Junção Externa, Auto-Junção e União Tarefa Orientada 12 Junção Externa, Auto-Junção e União Objectivos: Junção externa (Outer JOIN) Junção externa à esquerda (LEFT Outer JOIN) Junção externa à direita (RIGHT Outer JOIN) Junção externa completa

Leia mais

Sumário. Introdução... 1. 1 O Problema... 3

Sumário. Introdução... 1. 1 O Problema... 3 Sumário Introdução... 1 1 O Problema... 3 1.1 Definição do Problema... 3 1.2 A Solução... 3 1.2.1 Projeto Conceitual...4 1.2.2 Projeto Lógico... 5 1.2.3 Projeto Físico... 6 2 Criação de Bancos de Dados...

Leia mais

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si.

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si. NOME: BRUNO BRUNELI BANCO DE DADOS - ADS create database ProducaoMinerais use ProducaoMinerais create table Mineral( nome varchar(15) primary key, preco real) create table Pais( nome varchar(30) primary

Leia mais

ARQUITETURA TRADICIONAL

ARQUITETURA TRADICIONAL INTRODUÇÃO Atualmente no universo corporativo, a necessidade constante de gestores de tomar decisões cruciais para os bons negócios das empresas, faz da informação seu bem mais precioso. Nos dias de hoje,

Leia mais

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Programação com acesso a BD Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br 1 Modelos de Dados, Esquemas e Instâncias 2 Modelos de Dados, Esquemas e Instâncias Modelo de dados: Conjunto de conceitos

Leia mais

Banco de Dados. Conversão para o Banco de Dados SisMoura

Banco de Dados. Conversão para o Banco de Dados SisMoura Banco de Dados Conversão para o Banco de Dados SisMoura Objetivo : Converter as informações contidas em um determinado banco de dados para o banco de dados do Sismoura. Restaurar Banco de Dados em branco

Leia mais

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Banco de Dados Oracle 10g: Introdução à Linguagem SQL Oracle University Entre em contato: 0800 891 6502 Banco de Dados Oracle 10g: Introdução à Linguagem SQL Duração: 5 Dias Objetivos do Curso Esta classe se aplica aos usuários do Banco de Dados Oracle8i,

Leia mais

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas: Álgebra Relacional Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída operação (REL 1 ) REL 2 operação (REL 1,REL 2 ) REL 3 Operações básicas: seleção projeção

Leia mais

PostgreSQL Performance

PostgreSQL Performance PostgreSQL Performance André Restivo Faculdade de Engenharia da Universidade do Porto February 24, 2012 André Restivo (FEUP) PostgreSQL Performance February 24, 2012 1 / 45 Sumário 1 Armazenamento 2 Índices

Leia mais

BANCO DE DADOS E BUSINESS INTELIGENCE. C/H: 20 horas (20/02, 25/02, 27/02, 04/03, 06/03)

BANCO DE DADOS E BUSINESS INTELIGENCE. C/H: 20 horas (20/02, 25/02, 27/02, 04/03, 06/03) MBA em Gestão de TI MÓDULO: BANCO DE DADOS E BUSINESS INTELIGENCE C/H: 20 horas (20/02, 25/02, 27/02, 04/03, 06/03) PROFESSOR: Edison Andrade Martins Morais prof@edison.eti.br http://www.edison.eti.br

Leia mais

SQL (Structured Query Language)

SQL (Structured Query Language) (Structured Query Language) I DDL (Definição de Esquemas Relacionais)... 2 I.2 Domínios... 2 I.3 Criação de Tabelas... 2 I.4 Triggers... 4 II DML Linguagem para manipulação de dados... 5 II.2 Comando SELECT...

Leia mais

UFES Universidade Federal do Espírito Santo Centro de Ciências Agrárias Departamento de Engenharia Rural Disciplina de Banco de Dados.

UFES Universidade Federal do Espírito Santo Centro de Ciências Agrárias Departamento de Engenharia Rural Disciplina de Banco de Dados. Ativando o MySQL Tutorial MySQL Passo1: Verificar onde (path, caminho) o MySQL está instalado. Figura 1. Diretório de instalação do MySQL Nome do Arquivo MySqld Mysqld-debug Mysqld-nt Mysqld-max Mysqld-max-nt

Leia mais