[PHP & MySQL] Data zonder 'owner' verwijderen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • bas.kb
  • Registratie: Oktober 2002
  • Laatst online: 04-05 23:35

bas.kb

BI'er :P

Topicstarter
Heej!

Ik heb hier een database met ong. 18000 klanten welke door de jaren via een website gevuld is. De klanten hebben zelf de mogelijkheid om zich uit te schrijven. Op dat moment wordt de klant ook echt verwijderd, alleen worden de koppeltabellen (waar info over de desbetreffende klant) instaat wèl bewaard. Dit was natuurlijk niet nodig, en met zo af en toe een bugfix zijn de ergste fouten weggehaald. Ondertussen is de database vervuild met allerlei informatie die er in principe niet meer toe doet. Deze wil ik alsnog verwijderen.

Heb hiervoor in php een script geschreven. Ik lees de klantentabel uit, en stop alle klanten id's in een array. Die array is op dat moment gevuld met 18000 id's. Vervolgens vul ik een andere array met de klanten id's uit de koppeltabellen... en vergelijk deze twee arrays met elkaar dmv de functie 'array_diff()'. De array die overblijft zijn klanten die nog wel in de koppeltabellen staan, maar niet meer in de klantentabel. Vanaf hier kan ik deze info 1..2..3 verwijderen.

Dit gaat allemaal goed, maar duurt alleen erg lang. Vaak loopt mijn computer vast omdat al die volgepropte array's teveel geheugen slurpen. Is er een manier om snel je database te doorzoeken op 'verdwaalde' info.

Thx :)

Acties:
  • 0 Henk 'm!

Verwijderd

je eerste array in chunks in lezen met de limit functie en dan query voor query de koppel gegevens testen en bij houden in een losse array welke dus niet gekoppeld zijn en die verwijderen?

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 15:52
Als je een array hebt, een directe query DELETE * FROM tabelnaam WHERE id NOT in (1, 5, 7...)

:?.

Acties:
  • 0 Henk 'm!

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 18-09 22:40

Nick_S

++?????++ Out of Cheese Error

Misschien met een SQL commando:

SELECT * FROM KoppelTabel WHERE ID NOT IN (SELECT ID FROM HoofdTabel)

Test dit met SELECT en niet met DELETE :P


[EDIT]
Ongeveer zoals Dennis dus zegt, maar ik ben weer net te laat. ;(

[ Voor 21% gewijzigd door Nick_S op 17-11-2004 17:29 ]

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'