Remise à zéro autoindex mysql

poupilou
WRInaute discret
WRInaute discret
 
Messages: 237
Inscription: 9 Fév 2004

Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 15:12

Bonjour, j'essaie la requête suivante ALTER TABLE `ma_table` AUTO_INCREMENT=0 mais ça ne ré-initialise pas le compteur de l'AUTO_INCREMENT, si j'ai supprimé des entrées dans ma table il y a donc des "trous" dans la numéroration et j'aimerai les combler, je pensais qu'avec la requête suivante ALTER TABLE `ma_table` AUTO_INCREMENT=0 ça fonctionerait, mais ç'est pas le cas ! Savez-vous comment faire ? Merci pour vos réponses.

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 16:49

auto_increment ne sait pas "remplir les trous", et tu ne peux pas remettre le compteur à une valeur inférieure à la plus grande valeur déjà attribuée.

Jacques.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Re: Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 16:51

+1 avec jcaron. Et j'ai du mal à imaginer l'intérêt que cela peut avoir de combler ces fameux "trous" vu que cela n'entame en rien les performances.

poupilou
WRInaute discret
WRInaute discret
 
Messages: 237
Inscription: 9 Fév 2004

Re: Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 17:15

Merci pour vos réponses.

Comme je met à jour ma table toutes les semaines et qu'il peut y avoir parfois des milliers d'articles supprimés et donc des milliers qui viennent s'ajouter, imaginez dans 5 ans le compteur de l'AUTO_INCREMENT, il sera à 12569566544566, alors que si chaque semaine les nouveaux produits viennent combler les "trous" ce sera déjà plus acceptable, non ?

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 17:41

10 000 articles par semaine * 52 semaines * 100 ans = 52 millions. Si tu utilises bien des "int" (et pas des tinyint / smallint / mediumint), ça rentre largement dans un entier 32 bits (tu peux aller jusqu'à 2 milliards suivant les cas, 4 si ton champ est en unsigned int). Si jamais ça ne te paraît pas suffisant, tu peux passer sur un unsigned bigint et là la limite est de 16 milliards de milliards.

Où est le problème?

Jacques.

poupilou
WRInaute discret
WRInaute discret
 
Messages: 237
Inscription: 9 Fév 2004

Re: Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 20:26

Où est le problème?

Le souci c'est que dans l'url de mes pages descriptives de mes produits se trouvent le numéro de l'AUTO_INCREMENT (http://www.mon-site.com/produit-112.html) et si ces numéros changent toutes les semaines c'est pas bon pour le référencement de ces pages via GG, d'ou mon idée de garder si possible les mêmes numéros et/ou de les ré-utiliser.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Re: Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 20:31

Tu peux aussi t'affranchir complètement d'utiliser ces id dans l'url (en créant un champ spécifique qui contiendrait l'url du produit, qui serait unique, et qui te servirait de clé pour retrouver les infos du produits). Ca te permettrait aussi du coup de raccourcir tes url.

poupilou
WRInaute discret
WRInaute discret
 
Messages: 237
Inscription: 9 Fév 2004

Re: Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 20:37

Oui ça aurait pu être une solution mais ma table contient plus de 100 000 lignes et 25 colonnes, imagine le nombre de données à traiter, mes requêtes son assez lentes, il est difficile de créer une nouvelle colonne et de rajouter encore du contenu.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Re: Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 20:43

Pas forcément, logiquement tes titres de produit son uniques, donc tu peux tout a fait je penser generer ton url a partir de ceux-ci après le traitement qui va bien.

poupilou
WRInaute discret
WRInaute discret
 
Messages: 237
Inscription: 9 Fév 2004

Re: Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 20:49

Désolé j'ai pas compris ta réponse, qu'entend-tu par "generer ton url a partir de ceux-ci après le traitement qui va bien" ?


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Re: Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 21:00

Hé bein tu génères le contenu de ce champ url à partir du titre du produit, après avoir retraité ce titre de manière à supprimer tous les caractères qui n'ont pas leur place dans une url (accents, ponctuations, etc.) et les espaces par des -.

poupilou
WRInaute discret
WRInaute discret
 
Messages: 237
Inscription: 9 Fév 2004

Re: Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 21:34

ce n'est pas possible car je n'ai pas de titres distinct pour mes produits, le titre est créé par une association de plusieurs de mes champs mais il y a assez souvent des titres identiques, donc cela ferait des doublons. La seule solution reste un numéro unique présent dans le titre qui permette de retrouver l'id du produit dans la table.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Re: Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 21:47

Si vraiment ce que tu cherches à faire c'est "combler" les trous, lors de la création d'un nouveau contenu, il va te falloir faire une recherche dans la base de donnée (triée par id croissant) pour récupérer le premier emplacement "vide", c'est à dire l'identifiant x qui n'est pas suivi par un identifiant x+1.

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: Remise à zéro autoindex mysql

Message le Mer Sep 16, 2009 23:39

poupilou a écrit:Le souci c'est que dans l'url de mes pages descriptives de mes produits se trouvent le numéro de l'AUTO_INCREMENT (http://www.mon-site.com/produit-112.html) et si ces numéros changent toutes les semaines c'est pas bon pour le référencement de ces pages via GG, d'ou mon idée de garder si possible les mêmes numéros et/ou de les ré-utiliser.


Ca n'a pas grand chose à voir tout ça... Si c'est le même produit qui change, il faut garder son id. Tu fais ça au moment où tu traites tes mises à jour: tu cherches le produit correspondant (tu dois bien avoir un critère qui te permet de le reconnaître, non?), s'il existe tu fais un update, sinon un insert. Dans les deux cas tu as un champ "dernier update", et si la date du dernier update est supérieure à la date de début du traitement, hop, tu effaces.

C'est un flux produit, non?

Jacques.

poupilou
WRInaute discret
WRInaute discret
 
Messages: 237
Inscription: 9 Fév 2004

Re: Remise à zéro autoindex mysql

Message le Jeu Sep 17, 2009 8:53

UsagiYojimbo le souci avec un champs en AUTO_INCREMENT c'est que ce n'est pas moi qui décide quel chiffre je met dans ce champs, si j'ai un trou pour le numéro "122" il restera manquant, il n'y a pas de moyen de recréer un n° 122 tant qu'il y a l'AUTO_INCREMENT sur ce champs.

Merci pour ta réponse Jacques. Je vais suivre tes indications et voir comment je peux faire.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité