Se você usa o banco de dados Oracle sabe que tem o melhor produto do mercado. Muitos sites usam o MySQL pelo preço e recursos básicos, mas se for para o lado corporativo onde o bicho pega, Oracle é a solução. O banco de dados deste site é o MySQL, veja como instalar o WordPress no Mac OS X ou como Otimizar e Melhorar o MySQL Com WordPress.
O Oracle é o banco mais seguro e com mais recursos que conheço, um exemplo disso é a simples tarefa, não tão simples em outros bancos, de eliminar registros duplicados. Vejamos:
Por exemplo temos a tabela EMPREGADOS com os registros duplicados:
select nome,matricula from empregados where nome='ANTONIO';
Nome Matricula
------- ---------
ANTONIO 1234567
ANTONIO 1234567
Se fosse apenas o problema o ANTONIO, bastava remover os dois e reinserir apenas um. Como fazer se você tem muitos outros registros na mesma situação, as vezes milhares ou milhões?
No caso de milhões de registros duplicados, sabendo como apaga-los recomendo:
1. Desativar os índices para apagar para agilizar o processo.
2. Ao invés de apagar os registros duplicados, criar uma nova tabela com os registros certos. Em alguns casos onde existem milhões de duplicados, este é o melhor caminho.
Mas voltando ao caso do ANTONIO, como vamos apagar de forma segura muitos registros semelhantes que estão duplicados?
O Oracle contém uma pseudo coluna chamada ROWID, uma chava primária única criada para cada registro inserido no banco. Você pode viusalizar esta coluna assim:
select rowid, nome, matricula from empregados;
Rowid Nome Matricula
------ ------- ----------
aaawdwddw ANTONIO 1234567
bbookwoee ANTONIO 1234567
para pegar apenas um destes registros selecionamos através do min(rowid):
select min(rowid) from empregados group by nome,matricula;
E por fim, para eliminar estes registros usamos o seguinte comando:
delete from empregados where rowid not in
(select min(rowid) from empregados group by nome,matricula);
Stay connected