2011-01-27 2 views
3

J'ai une table Many-to-Many, dans laquelle je saisis des informations de formulaire. J'ai récemment rendu ce formulaire dynamique, de sorte que quand une valeur d'éléments d'entrée est changée, elle est envoyée à la base de données via AJAX.MySQL Beaucoup à beaucoup. Pour supprimer ou modifier?

Ma question est la suivante: Est-il plus vite pour essayer de trouver les valeurs qui existent, les modifier, créer ceux qui ne le font pas et supprimer ceux qui ne sont plus utilisés OU Dois-je supprimer tous les valeurs pour l'ID, et insérez tous les nouveaux?

En réponse à un commentaire, une élaboration.

  • Une forme, qui a environ 10 champs. Certains d'entre eux sont obligatoires, d'autres non. Chaque fois que vous y accédez, il génère un identifiant aléatoire.
  • Lorsqu'un utilisateur commence à remplir le formulaire, après la suppression d'un élément, le formulaire entier est soumis via AJAX et toutes les valeurs non vides sont entrées dans la table plusieurs à plusieurs.
  • La table comporte 3 champs: forme identificateur, nom d'élément, la valeur de l'élément ;

La question reformulée: -je supprimer toutes les entrées de la forme requise identificateur, ou essayer de trouver les champs et les modifier?

+0

Je pense que vous devrez élaborer la forme de votre table Many2Many, et comment votre formulaire AJAX l'affecte, afin d'obtenir des informations précieuses. – Romain

Répondre

3

Il faudra moins de code pour supprimer toutes les relations existantes et ajouter de nouvelles

  • Assurez-vous de le faire dans une transaction
  • erreurs Manipulez correctement

Moins de code == moins bugs, moins de temps de développement. Donc c'est définitivement plus rapide.

+0

+1. À moins qu'il n'y ait plusieurs milliers de lignes, le délai ne devrait pas être perceptible. Et plusieurs milliers de lignes ne peuvent pas se produire dans une interface utilisateur saine de toute façon. Le nombre d'allers-retours à la base de données peut être inférieur avec une suppression. – 9000

1

Je supprime toujours tous les & insérer dans des cas comme celui-ci. Je soupçonne que le temps de traitement serait plus long pour rechercher, modifier, créer, supprimer.

Vous pouvez également regarder:

INSERT INTO table (field1, field2) VALUES ('Value1', 'Value2') 
ON DUPLICATE KEY UPDATE field1 = 'Value1' 

qui va insérer un nouvel enregistrement ou mettre à jour un existant - je encore soupçonne la suppression/insertion pour être plus rapide - en fonction du nombre de champs vous seriez mis à jour à tout moment.

Questions connexes