Actuellement, j'ai une base de données avec plus de 6 millions de lignes et qui continue de croître. Je fais actuellement SELECT COUNT(id) FROM table; pour afficher le nombre à mes utilisateurs, mais la base de données devient volumineuse et je n'ai pas besoin de conserver toutes ces lignes sauf pour pouvoir afficher le nombre. Existe-t-il un moyen de sélectionner la valeur auto-incrémentée à afficher afin que je puisse effacer la plupart des lignes de la base de données? L'utilisation de LAST_INSERT_ID()
ne semble pas fonctionner.
Réponses
Trop de publicités?Suivant est la façon la plus performante de trouver la prochaine valeur AUTO_INCREMENT
pour une table. C'est rapide même sur les bases de données contenant des millions de tables, car cela ne nécessite pas d'interroger la base de données information_schema
potentiellement volumineuse.
mysql> SHOW TABLE STATUS LIKE 'nom_table';
// Recherchez la colonne Auto_increment
Cependant, si vous devez récupérer cette valeur dans une requête, alors vous devez accéder à la base de données information_schema
.
SELECT `AUTO_INCREMENT`
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'NomDeLaBase'
AND TABLE_NAME = 'NomDeLaTable';
Si c'est seulement pour obtenir le nombre d'enregistrements (lignes), je suggérerais d'utiliser :
SELECT TABLE_ROWS
FROM information_schema.tables
WHERE table_name='the_table_you_want' -- Peut se terminer ici s'il n'y a qu'une seule base de données
AND table_schema = DATABASE(); -- Voir le commentaire ci-dessous s'il y a plus d'1 base de données
(au moins pour MySQL) à la place.
Si vous obtenez directement le numéro maximal en écrivant une requête select, il y a peut-être une chance que votre requête donne une valeur incorrecte. par exemple, si votre table a 5 enregistrements, l'ID d'incrémentation sera 6 et si je supprime l'enregistrement numéro 5, votre table aura 4 enregistrements avec un ID maximal de 4, dans ce cas, vous obtiendrez 5 comme prochain ID d'incrémentation. au lieu de cela, vous pouvez obtenir des informations à partir de la définition mysql elle-même. en écrivant le code suivant en PHP
" . $qShowStatus);
$row = mysql_fetch_assoc($qShowStatusResult);
$next_increment = $row['Auto_increment'];
echo "prochain numéro d'incrémentation: [$next_increment]";
?>
- Réponses précédentes
- Plus de réponses