MYSQL et auto increment

Bonjour a tous…

Pendant que je suis en train de chercher, si quelqu’un à la soluce et peux m’avancer en me donnant la solution de ma question :

J’ai une table avec un champ “id” en auto incrément, jusque là tres simple…

Seulement c’est une table avec des infos temporaires dont la durée est variable entre chaque enregistrement, et ces enregistrement sont donc ammené à disparaitre au bout d’un certains temps, mais dans un ordre quelconques…

Plutot que de continuer à auto incrémenter betement mon id jusqu’à plus soif (jusqu’à etre obligé de passer de smallint a mediumint par exemple) existe t il des fonctions mysql permettant de boucher les trous si il y en a avant d’autoincréenté derrier le dernier id de la table ?

Ou alors vais je etre obligé de passer par du code PHP et virer l’auto incrémentation de mysql pour me faire une pseudo autoincrémentation comme je le désire en php ? (ce qui nécessite surement plusieurs requetes plus lourdes qu’une simple fonction mysql si elle existe)

Merci pour le temps que vous pouvez me faire gagner… voir les astuces que vous pourriez me donner…

En mySQL une clef primaire, c’est juste un INDEX UNIQUE. Maintenant d’autres personnes ont déjà parlés de ce genre de sujet, et hormis le OPTIMIZE pour reprendre le MAX pour l’auto_increment, tu n’as pas trop de choix.

Tu peux aussi faire un ramasse miette si ça t’amuse.

Mouais, vais devoir me faire une moulinette en php pour trouver les “id” libres…

A moins que…
entre une table avec 10000 enregistrements avec un id en smallint, et la même chose mais l’id en mediumint, c’est quoi le gain en mémoire ?

cf. doc mySQL

[cpp]UNSIGNED TINYINT : 0 à 2^8 : 1 octet
UNSIGNED SMALLINT : 0 à 2^16 : 2 octets
UNSIGNED MEDIUMINT : 0 à 2^24 : 3 octets
UNSIGNED INT : 0 à 2^32 : 4 octets
UNSIGNED BIGINT : 0 à 2^64 : 8 octets[/cpp]

Note: faut retirer -1 pour chaque borne supérieure.

Et franchement, fout un MEDIUMINT et cherche pas la petite bête.

Ok, je me suis pas planté dans mon idée, même en passant en int, si j’ai 10000 enregistrements simultanée, je “gache” 30ko sur un samllint… donc pas la peine de bouffer de la ressource CPU a chaque requette pour gagner 30ko dans ma base en effet

pour repondre a ta question qui n’est pas denué par ailleur (pas dans ce cas la c vrai)
quand on gerer une problemeatique de fragmentation
le mieu est de gerer une freelist (une petite table ou autre qui contient la liste des emplacement libre… ça se gere a l’effacement d’un enregistrement et a l’insertion)

mais bon la laisse tomber sinon sans-nom va pas en dormir du week end … :confused: et apres il fait peur a tout les forumeurs

edit : …denué de sens…

:lol: