|
Busca |
É necessário manter a sua base de dados para que continue eficiente. O que entendemos por eficiente é, o facto das informações contidas na base sejam enviadas rapidamente ao script que as pede. Para isso, é necessário uma base bem estruturada e optimizada. Neste guia, vamos-lhe mostrar como optimizar o melhor possível a sua base de dados. Indexar a base de dados Para aumentar a rapidez das procuras na hora de um pedido, é necessário pôr um índice sobre os campos que são utilizados nas cláusulas WHERE. Exemplo : Fazer uma procura de pessoa em relação à cidade. É necessário indexar o campo " cidade" com o pedido seguinte: ALTER TABLE `test` ADD INDEX ( `cidade` ); Purgar a base Alguns dos seus dados não são consultados. Porque não os arquivar? As suas tabelas estarão menos cheias e as investigações irão ser mais rápidas. Limitação de apresentação Limitar a apresentação dos registos a um número restrito (tipo 10 por página) com a parte LIMIT do pedido. Agrupamento dos pedidos Agrupar os seus pedidos no início do script assim: ligacao_base pedido1 pedido2 ... desligar_base Afixação ... Tratamento dos dados Voltas ... Afixação ... ... Fazer uso da cache: Se tem informações que são "tiradas" da BD e que não altera frequentemente, pode coloca-las em cache. Por exemplo, gerir a página HTML quando altera as informações. Este tipo de astúcia diminuirá drasticamente os seus acessos. Por exemplo uma página de news. Se o ficheiro (em cache) HTML existe, pode utilizá-lo (simples include) se não, gere-o. E no momento em que afixa uma nova notícia , pode incluir no script que a elimina o tal ficheiro HTML: assim será regerado na próxima vez que um visitante o pede. Pode também fazer uso da cache de sessão. Pode guardar os resultados de um pedido numa variável de sessão, para que quando o mesmo pedido for efectuado, não o executar novamente, apenas recuperará as variáveis de sessão. Escolher unicamente o necessário Nos seus pedidos SQL verifique que seleccionou apenas o que tem necessidade, e sobretudo que não esqueceu as ligações entre as tabelas (where table1.campo = table2.campo2) porque se não o fez, demora muito tempo (ainda que com o where lhe apareça um resultado correcto). Evitar as opções demasiado "gulosas" Evitem utilizar HAVING (também é uma fábrica a gás), idem para GROUP BY. Certamente, às vezes é obrigatório, mas outras vezes não. |