Voici donc un récapitulatif de ce qu'il faut faire pour optimiser cette table. Je pense que ça concerne tout le monde, toute version confondue FSB.
Citation (TCool)
/*
** Fait plusieurs insertions pour une seule requète.
*/
function requete_message_lu($insert)
{
global $bdd, $config, $langue;
if ($insert != '')
{
$sql = 'INSERT INTO ' . MESSAGES_LUS_TABLE . '
(membre_id, sujet_id, forum_id, dernier_message_lu)
VALUES ' . $insert;
if (!$result = $bdd->requete($sql))
{
info($langue['er_titre'], sprintf($langue['er_insert'], 'messages_lus'), __LINE__, __FILE__, $sql);
}
}
}
Par ..
/*
** Fait plusieurs insertions pour une seule requète.
*/
function requete_message_lu($insert)
{
global $bdd, $config, $langue;
if ($insert != '')
{
$sql = 'REPLACE INTO ' . MESSAGES_LUS_TABLE . '
(membre_id, sujet_id, forum_id, dernier_message_lu)
VALUES ' . $insert;
if (!$bdd->requete($sql))
{
info($langue['er_titre'], sprintf($langue['er_insert'], 'messages_lus'), __LINE__, __FILE__, $sql);
}
}
}
Un
REPLACE, sa évite les doublons. vue qu'il insére si exite pas et replace si existe ..
Ou alors faire une clé primaire de 'membre_id, forum_id, sujet_id' (attention au insert en double) ..
La correction faite, on récupère alors l'espace inutile perdu

et on optimise le tout (ça peut faire gagner pas mal en taille sur les gros forums!)
En adaptant éventuellement le préfix
fsb_, executer ceci dans phpmyadmin:
[sql]CREATE TABLE `fsb_messages_lus_2` (
`membre_id` int( 11 ) NOT NULL default '0',
`forum_id` int( 11 ) NOT NULL default '0',
`sujet_id` int( 11 ) NOT NULL default '0',
`dernier_message_lu` int( 11 ) NOT NULL default '0',
KEY `sujet_id` ( `sujet_id` ) ,
KEY `membre_id` ( `membre_id` )
) ENGINE = MYISAM DEFAULT CHARSET = latin1;
INSERT INTO `fsb_messages_lus_2`
SELECT DISTINCT *
FROM `fsb_messages_lus`;
DROP TABLE `fsb_messages_lus`;
ALTER TABLE `fsb_messages_lus_2` RENAME `fsb_messages_lus`;
OPTIMIZE TABLE `fsb_messages_lus`;[/sql]
Corriger c'est bien, nettoyer et optimiser en plus, c'est mieux
le DISTINCT fait tout ici (:)