extint Posted September 10, 2009 at 01:38 PM Report Share #286315 Posted September 10, 2009 at 01:38 PM Boa tarde pessoal, Eu estou a desenvolver um projecto (projecto da faculdade) que obriga a ter tabelas da base de dados (Sql Server) com muitos dados, chegando mesmo aos 10 milhoes de registos. A minha dificuldade é a seguinte: Para melhorar o desenho das pesquisas, inserções ou eliminações de dados, verifiquei que o melhor é criar um index nas tabelas, so que o problema é que nao sei bem como é que poderei fazer a implementação dos index e depois como e que poderei funcionar com eles! será que alguem me poderá dar uma ajudar? tipo disponibilizar aqui algum material ou paginal com exemplos de implementação! Obrigado e abraços a todos. Link to comment Share on other sites More sharing options...
bruno1234 Posted September 10, 2009 at 08:39 PM Report Share #286375 Posted September 10, 2009 at 08:39 PM A utilização dos index é implicita, se tiverem criados estão a ser usados. Os index podem aumentar a performance de um select, mas diminuem dos inserts e updates. Deves criar indexes das tabelas em q fazes mtos selects no campo q é mais filtrado nas querys. As primary keys já são indexadas por defeito. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos Link to comment Share on other sites More sharing options...
M6 Posted September 10, 2009 at 08:58 PM Report Share #286379 Posted September 10, 2009 at 08:58 PM Atenção que a inclusão de índices per se pode não resolver o problema, em casos extremos pode inclusive degradar a performance dos inserts/deletes e ser totalmente ignorado nos selects. Atenção também que não raras vezes a rescrita das queries de forma mais eficiente resulta em ganhos de performance muito grandes. Se tens tabelas grandes, a primeira coisa a fazer não é meter índices mas sim usar o query analyser para veres o plano de execução e assim saberes onde as queries estão a demorar mais tempo. A partir dai decides onde deves intervir: que indíces criar ou eliminar (sim, não raras vezes os índices não estão lá a fazer nada), rescrever a query para ser mais eficiente, reestruturar a tabela ou a base de dados para ser mais eficiente, etc.. Acima de tudo não mexer em nada sem analisar antes o problema e fazer a intervenção só depois de se saber quais são os pontos críticos. Usar de novo o plano de execução para ver se a intervenção resultou. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
bruno1234 Posted September 10, 2009 at 09:01 PM Report Share #286380 Posted September 10, 2009 at 09:01 PM Mais um coisa, não deves criar mais do q um indice por tabela. E a parte q o M6 referiu da escrita das querys é mto importante, uma query bem estruturada pode aumentar em mto a performance. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos Link to comment Share on other sites More sharing options...
M6 Posted September 11, 2009 at 09:40 AM Report Share #286424 Posted September 11, 2009 at 09:40 AM bruno1234, isso de não criares mais do que um índice por tabela não é linear. Podes ter vários índices, incluindo de vários tipos diferentes, tens é de garantir que a sua inclusão é benéfica, como referi acima, analisar plano de execução é critico para esta tarefa. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
rt4ever Posted September 13, 2009 at 02:14 PM Report Share #286759 Posted September 13, 2009 at 02:14 PM Já agora aproveito este tópico para perguntar se a Indexação tem de ser definida com a tabela vazia? e caso não seja preciso, o que acontece se a Indexação for definida com dados na tabela? Obrigado desde já pelo esclarecimento. Link to comment Share on other sites More sharing options...
bruno1234 Posted September 13, 2009 at 02:29 PM Report Share #286762 Posted September 13, 2009 at 02:29 PM Podes definir das duas maneiras, vazia ou não. Os indices são criados de acordo com os dados q tens na tabela, e são recriados a cada insert/update/delete. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos Link to comment Share on other sites More sharing options...
rt4ever Posted September 13, 2009 at 02:53 PM Report Share #286768 Posted September 13, 2009 at 02:53 PM E sabes-me explicar a diferença entre usar clustering ou nao ? Obrigado e desculpa la. Link to comment Share on other sites More sharing options...
bruno1234 Posted September 13, 2009 at 03:05 PM Report Share #286771 Posted September 13, 2009 at 03:05 PM Isso podes ler aqui: http://en.wikipedia.org/wiki/Index_(database) Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos Link to comment Share on other sites More sharing options...
rt4ever Posted September 13, 2009 at 03:15 PM Report Share #286773 Posted September 13, 2009 at 03:15 PM Obrigado pela tua ajuda vou ler isso para ver se consigo aplicar à minha bd. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now