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?Si vous n'avez pas le privilège pour "Afficher l'état" alors, la meilleure option est de créer deux déclencheurs et une nouvelle table qui garde le compte des lignes de votre table de milliards d'enregistrements.
Exemple :
TableA >> Milliards d'enregistrements
TableB >> 1 Colonne et 1 Ligne
Chaque fois qu'il y a une requête d'insertion sur TableA (Déclencheur d'insertion), incrémentez la valeur de ligne de 1 dans TableB
Chaque fois qu'il y a une requête de suppression sur TableA (Déclencheur de suppression), décrémentez la valeur de ligne de 1 dans TableB
Contrôleur
SomeNameModel::_getNextID($this->$table)
MODÈLE
class SomeNameModel extends CI_Model{
private static $db;
function __construct(){
parent::__construct();
self::$db-> &get_instance()->db;
}
function _getNextID($table){
return self::$db->query("SHOW TABLE STATUS LIKE '".$table."' ")->row()->Auto_increment;
}
... autre code
}