| |
Savez-vous bien utiliser les outils de mesure d'audience ? Effectuez-vous un calcul de ROI (Retour sur investissement) pour savoir comment améliorer vos campagnes emarketing ? Savez-vous utiliser les bons outils pour booster votre taux de transformation ? La formation Web Analytics de Ranking Metrics, présentée par un expert reconnu officiellement par Google Analytics, vous apportera les réponses à toutes vos questions ! ===> Informations et inscriptions.
|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
Sébastien Night Nouveau WRInaute
Inscrit le: 06 Avr 2007 Messages: 21 Localisation: Nantes
|
Posté le : Mer Avr 11, 2007 11:22 Sujet du message: Supprimer les enregistrements orphelins dans MySQL ? |
|
|
J'ai appliqué sur un de mes forums phpBB (70 000 messages, une base de données trop grande pour l'hébergeur) ce script pour alléger les 2 000 000 d'enregistrements de ma table search_word_match.
Malheureusement, le mec qui a conçu ce script n'a pas eu le bon sens de penser à l'intégrité de la base de données. Du coup ça m'a foutu en l'air la logique de ma BDD. J'assume la responsabilité d'avoir appliqué le script sans sauvegarde, mais je suis quand même blasé.
J'explique :
Quand on écrit un post dans phpBB, celui-ci recense les mots contenus (en appliquant un filtre).
Ensuite les mots sont mis dans une table mots.
Puis pour chaque mot on crée un lien entre l'id du post et l'id du mot dans une table match.
Donc j'avais 120 000 mots et 2 000 000 de match
Le script me propose de choisir des mots à virer, j'ai viré tous les mots de moins de 3 lettres ainsi que les plus utilisés sur le forum (au moins 400 000 match de gagnés a priori).
Sauf que ce script supprime bêtement les mots en premier et les match ensuite. Donc comme chez moi, il a planté après avoir viré les mots, je suis pris au piège puisqu'il m'est impossible de retrouver les match "orphelins" !!!!!
Ma question technique est donc :
Comment faire pour virer les éléments orphelins d'une table d'associations sous MySQL ?
Merci d'avance,
SBN |
|
| |
|
 |
arnaudmn WRInaute accro

Inscrit le: 11 Mai 2005 Messages: 1423
|
Posté le : Mer Avr 11, 2007 11:31 Sujet du message: Supprimer les enregistrements orphelins dans MySQL ? |
|
|
delete from table1
where not exists(select quelquechose from table2 where table1.unchamp = table2.unchamp) |
|
| |
|
 |
Sébastien Night Nouveau WRInaute
Inscrit le: 06 Avr 2007 Messages: 21 Localisation: Nantes
|
Posté le : Mer Avr 11, 2007 11:35 Sujet du message: Supprimer les enregistrements orphelins dans MySQL ? |
|
|
Bon j'ai trouvé ce post et j'ai bidouillé la requete SQL de Suede.
Je crois que j'avance, j'arrive à compter les orphelins :
| Code: |
SELECT ls.word_id, ls.word_text, COUNT(wm.word_id) as entries
FROM `phpbb_search_wordmatch` as wm
LEFT JOIN `phpbb_search_wordlist` as ls ON ls.word_id=wm.word_id
WHERE ls.word_text IS NULL
GROUP BY wm.word_id
ORDER BY entries DESC
|
|
|
| |
|
 |
Sébastien Night Nouveau WRInaute
Inscrit le: 06 Avr 2007 Messages: 21 Localisation: Nantes
|
Posté le : Mer Avr 11, 2007 11:35 Sujet du message: Supprimer les enregistrements orphelins dans MySQL ? |
|
|
| arnaudmn a écrit: |
delete from table1
where not exists(select quelquechose from table2 where table1.unchamp = table2.unchamp) |
Des requêtes imbriquées sous MYSQL ? Je crois que c'est impossible !
Je vais quand même essayer.
Edit : j'ai fait le total, si j'arrive à tout virer ça va faire 648954 enregistrements en moins et je pourrai peut etre récupérer l'accès public à ma base (OVH l'a fermée en écriture !)
Re-edit :
| Citation: |
Nombre d'enregistrements effacés : 648954 (traitement: 31.7975 sec.)
requête SQL:
| Code: |
| DELETE FROM `phpbb_search_wordmatch` USING `phpbb_search_wordmatch` AS wm LEFT JOIN `phpbb_search_wordlist` AS ls ON ls.word_id = wm.word_id WHERE ls.word_text IS NULL |
|
Et j'ai gagné ..... 0 octets  |
|
| |
|
 |
Suede WRInaute accro

Inscrit le: 04 Oct 2002 Messages: 3658 Localisation: Suède
|
Posté le : Mer Avr 11, 2007 12:52 Sujet du message: Supprimer les enregistrements orphelins dans MySQL ? |
|
|
| Tu peux sinon vider les tables et reconstruire ton index grace à des mods. |
|
| |
|
 |
Sébastien Night Nouveau WRInaute
Inscrit le: 06 Avr 2007 Messages: 21 Localisation: Nantes
|
Posté le : Mer Avr 11, 2007 13:03 Sujet du message: Supprimer les enregistrements orphelins dans MySQL ? |
|
|
J'ai décidé de payer pour un quota de 100 Mo.
Edit : après optimisation de la table je n'ai gagné que 5 Mo au final. |
|
| |
|
 |
| |
|
|
|
|
Autres sujets de discussion :
|
|