Skip to content
Extraits de code Groupes Projets
Valider bfce9445 rédigé par esj's avatar esj
Parcourir les fichiers

Réécriture de l'optimisation des tables, pour supprimer les occurrences de...

Réécriture de l'optimisation des tables, pour supprimer les occurrences de SPIP_ASSOC. En définitive, il s'est avéré que les requêtes d'optimisation n'étaient pas optimsées, d'où réécriture importante. Ce serait encore plus optimal en MySQL >= 4, mais pour respecter la compatbilité MySQL3 on s'est contenté de contruire un DELETE avec IN, chaque élément du IN pouvant en supprimer plusieurs (construction admise par MySQL3.23,49 testée). 

A noter qu'en MySQL => 5 et en PG tout ce code PHP pourrait etre remplacé par une cascade.
parent 96ab20cf
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -17,18 +17,23 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// http://doc.spip.org/@optimiser_base
function optimiser_base($attente = 86400) {
# format = 20060610110141, si on veut forcer une optimisation tout de suite
$mydate = date("YmdHis", time() - $attente);
optimiser_base_une_table();
optimiser_base_disparus($attente);
optimiser_base_indexation();
}
//
// MySQL
//
function optimiser_base_une_table() {
if ($GLOBALS['table_prefix']) $table_pref = $GLOBALS['table_prefix']."_";
else $table_pref = "";
$result = spip_query("SHOW TABLES LIKE '$table_pref%'");
$result = spip_query($q="SHOW TABLES LIKE '$table_pref%'");
spip_log($q);
// on ne va OPTIMIZE qu'une seule des tables a chaque fois,
// pour ne pas vautrer le systeme
// lire http://dev.mysql.com/doc/refman/5.0/fr/optimize-table.html
......@@ -39,297 +44,266 @@ function optimiser_base($attente = 86400) {
include_spip('inc/meta');
ecrire_meta('optimiser_table', $table_op);
ecrire_metas();
$query = "OPTIMIZE TABLE ".$tables[$table_op];
spip_log($query);
spip_query($query);
spip_log("$query : ok");
$q = $tables[$table_op];
spip_log("debut d'optimisation de la table $q");
spip_query("OPTIMIZE TABLE $q");
spip_log("fin d'optimisation de la table $q");
}
}
// mysql < 4.0 refuse les requetes DELETE multi table
// et elles ont une syntaxe differente entre 4.0 et 4.1
// On passe donc par un SELECT puis DELETE avec IN
// Utilitaire exploitant le SELECT et appliquant DELETE
// L'index du SELECT doit s'appeler "id"
function optimiser_sansref($table, $id, $sel)
{
$in = array();
while ($row = spip_fetch_array($sel)) $in[$row['id']]=true;
if ($in) {
$in = join(',', array_keys($in));
spip_query("DELETE FROM $table WHERE " . calcul_mysql_in($id,$in));
spip_log("Numeros des entrees $id supprimees dans la table $table: $in");
}
return count($in);
}
// Nomenclature des liens morts entre les tables,
// suite a la suppresion d'articles, d'auteurs etc
// Maintenant que MySQL 5 a des Cascades on pourrait faire autrement
// mais on garde la compatibilite avec les version precedentes.
function optimiser_base_disparus($attente = 86400) {
# format = 20060610110141, si on veut forcer une optimisation tout de suite
$mydate = date("YmdHis", time() - $attente);
$n = 0;
// Les requetes DELETE multi table ne sont pas supportees par mysql<4.0
// et ont une syntaxe differente entre 4.0 et 4.1
// On passe donc par un SELECT puis DELETE unitaire dans une boucle while
// en pariant sur le fait que le nombre d'objets a supprimer est marginal
//
// Rubriques
// Rubriques
//
# les articles qui sont dans une id_rubrique inexistante
$res = spip_query("SELECT articles.id_article
$res = spip_query("SELECT articles.id_article AS id
FROM spip_articles AS articles
LEFT JOIN spip_rubriques AS rubriques
ON articles.id_rubrique=rubriques.id_rubrique
WHERE rubriques.id_rubrique IS NULL
AND articles.maj < $mydate");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_articles
WHERE id_article=".$row['id_article']);
$n+= optimiser_sansref('spip_articles', 'id_article', $res);
# les breves qui sont dans une id_rubrique inexistante
$res = spip_query("SELECT breves.id_breve
$res = spip_query("SELECT breves.id_breve AS id
FROM spip_breves AS breves
LEFT JOIN spip_rubriques AS rubriques
ON breves.id_rubrique=rubriques.id_rubrique
WHERE rubriques.id_rubrique IS NULL
AND breves.maj < $mydate");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_breves
WHERE id_breve=".$row['id_breve']);
$n+= optimiser_sansref('spip_breves', 'id_breve', $res);
# les forums lies a une id_rubrique inexistante
$res = spip_query("SELECT forum.id_forum FROM spip_forum AS forum
$res = spip_query("SELECT forum.id_forum AS id
FROM spip_forum AS forum
LEFT JOIN spip_rubriques AS rubriques
ON forum.id_rubrique=rubriques.id_rubrique
WHERE rubriques.id_rubrique IS NULL
AND forum.id_rubrique>0");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_forum
WHERE id_forum=".$row['id_forum']);
$n+= optimiser_sansref('spip_forum', 'id_forum', $res);
# les droits d'auteurs sur une id_rubrique inexistante
$res = spip_query("SELECT auteurs_rubriques.id_rubrique,auteurs_rubriques.id_auteur
# (plusieurs entrees seront eventuellement detruites pour chaque rub)
$res = spip_query("SELECT auteurs_rubriques.id_rubrique AS id
FROM spip_auteurs_rubriques AS auteurs_rubriques
LEFT JOIN spip_rubriques AS rubriques
ON auteurs_rubriques.id_rubrique=rubriques.id_rubrique
WHERE rubriques.id_rubrique IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_auteurs_rubriques
WHERE id_auteur=".$row['id_auteur']
." AND id_rubrique=".$row['id_rubrique']);
$n+= optimiser_sansref('spip_auteurs_rubriques', 'id_rubrique', $res);
# les liens des documents qui sont dans une id_rubrique inexistante
$res = spip_query("SELECT documents_rubriques.id_document,documents_rubriques.id_rubrique
# (meme remarque)
$res = spip_query("SELECT documents_rubriques.id_rubrique AS id
FROM spip_documents_rubriques AS documents_rubriques
LEFT JOIN spip_rubriques AS rubriques
ON documents_rubriques.id_rubrique=rubriques.id_rubrique
WHERE rubriques.id_rubrique IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_documents_rubriques
WHERE id_document=".$row['id_document']
." AND id_rubrique=".$row['id_rubrique']);
$n+= optimiser_sansref('spip_documents_rubriques', 'id_rubrique', $res);
# les liens des mots affectes a une id_rubrique inexistante
$res = spip_query("SELECT mots_rubriques.id_mot,mots_rubriques.id_rubrique
$res = spip_query("SELECT mots_rubriques.id_rubrique AS id
FROM spip_mots_rubriques AS mots_rubriques
LEFT JOIN spip_rubriques AS rubriques
ON mots_rubriques.id_rubrique=rubriques.id_rubrique
WHERE rubriques.id_rubrique IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_mots_rubriques
WHERE id_mot=".$row['id_mot']
." AND id_rubrique=".$row['id_rubrique']);
$n+= optimiser_sansref('spip_mots_rubriques', 'id_rubrique', $res);
//
// Articles
//
spip_query("DELETE FROM spip_articles
WHERE statut='poubelle' AND maj < $mydate");
spip_query("DELETE FROM spip_articles WHERE statut='poubelle' AND maj < $mydate");
# les liens d'auteurs d'articles effaces
$res = spip_query("SELECT auteurs_articles.id_auteur,auteurs_articles.id_article
$res = spip_query("SELECT auteurs_articles.id_article AS id
FROM spip_auteurs_articles AS auteurs_articles
LEFT JOIN spip_articles AS articles
ON auteurs_articles.id_article=articles.id_article
WHERE articles.id_article IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_auteurs_articles
WHERE id_auteur=".$row['id_auteur']
." AND id_article=".$row['id_article']);
$n+= optimiser_sansref('spip_auteurs_articles', 'id_article', $res);
# les liens de documents d'articles effaces
$res = spip_query("SELECT documents_articles.id_document,documents_articles.id_article
$res = spip_query("SELECT documents_articles.id_article AS id
FROM spip_documents_articles AS documents_articles
LEFT JOIN spip_articles AS articles
ON documents_articles.id_article=articles.id_article
WHERE articles.id_article IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_documents_articles
WHERE id_document=".$row['id_document']
." AND id_article=".$row['id_article']);
$n+= optimiser_sansref('spip_documents_articles', 'id_article', $res);
# les liens de mots affectes a des articles effaces
$res = spip_query("SELECT mots_articles.id_mot,mots_articles.id_article
$res = spip_query("SELECT mots_articles.id_article AS id
FROM spip_mots_articles AS mots_articles
LEFT JOIN spip_articles AS articles
ON mots_articles.id_article=articles.id_article
WHERE articles.id_article IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_mots_articles
WHERE id_mot=".$row['id_mot']
." AND id_article=".$row['id_article']);
$n+= optimiser_sansref('spip_mots_articles', 'id_article', $res);
# les forums lies a des articles effaces
$res = spip_query("SELECT forum.id_forum
$res = spip_query("SELECT forum.id_forum AS id
FROM spip_forum AS forum
LEFT JOIN spip_articles AS articles
ON forum.id_article=articles.id_article
WHERE articles.id_article IS NULL
AND forum.id_article>0");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_forum
WHERE id_forum=".$row['id_forum']);
$n+= optimiser_sansref('spip_forum', 'id_forum', $res);
//
// Breves
//
spip_query("DELETE FROM spip_breves
WHERE statut='refuse' AND maj < $mydate");
spip_query("DELETE FROM spip_breves WHERE statut='refuse' AND maj < $mydate");
# les liens de documents sur des breves effacees
$res = spip_query("SELECT documents_breves.id_document,documents_breves.id_breve
$res = spip_query("SELECT documents_breves.id_breve AS id
FROM spip_documents_breves AS documents_breves
LEFT JOIN spip_breves AS breves
ON documents_breves.id_breve=breves.id_breve
WHERE breves.id_breve IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_documents_breves
WHERE id_document=".$row['id_document']
." AND id_breve=".$row['id_breve']);
$n+= optimiser_sansref('spip_documents_breves', 'id_breve', $res);
# les liens de mots affectes a des breves effacees
$res = spip_query("SELECT mots_breves.id_mot,mots_breves.id_breve
$res = spip_query("SELECT mots_breves.id_breve AS id
FROM spip_mots_breves AS mots_breves
LEFT JOIN spip_breves AS breves
ON mots_breves.id_breve=breves.id_breve
WHERE breves.id_breve IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_mots_breves
WHERE id_mot=".$row['id_mot']
." AND id_breve=".$row['id_breve']);
$n+= optimiser_sansref('spip_mots_breves', 'id_breve', $res);
# les forums lies a des breves effacees
$res = spip_query("SELECT forum.id_forum
$res = spip_query("SELECT forum.id_forum AS id
FROM spip_forum AS forum
LEFT JOIN spip_breves AS breves
ON forum.id_breve=breves.id_breve
WHERE breves.id_breve IS NULL
AND forum.id_breve>0");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_forum
WHERE id_forum=".$row['id_forum']);
$n+= optimiser_sansref('spip_forum', 'id_forum', $res);
//
// Sites
//
spip_query("DELETE FROM spip_syndic
WHERE maj < $mydate AND statut = 'refuse'");
spip_query("DELETE FROM spip_syndic WHERE maj < $mydate AND statut = 'refuse'");
# les articles syndiques appartenant a des sites effaces
$res = spip_query("SELECT syndic_articles.id_syndic_article,syndic_articles.id_syndic
$res = spip_query("SELECT syndic_articles.id_syndic AS id
FROM spip_syndic_articles AS syndic_articles
LEFT JOIN spip_syndic AS syndic
ON syndic_articles.id_syndic=syndic.id_syndic
WHERE syndic.id_syndic IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_syndic_articles
WHERE id_syndic_article=".$row['id_syndic_article']
." AND id_syndic=".$row['id_syndic']);
$n+= optimiser_sansref('spip_syndic_articles', 'id_syndic', $res);
# les liens de mots affectes a des sites effaces
$res = spip_query("SELECT mots_syndic.id_mot,mots_syndic.id_syndic
$res = spip_query("SELECT mots_syndic.id_syndic AS id
FROM spip_mots_syndic AS mots_syndic
LEFT JOIN spip_syndic AS syndic
ON mots_syndic.id_syndic=syndic.id_syndic
WHERE syndic.id_syndic IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_mots_syndic
WHERE id_mot=".$row['id_mot']
." AND id_syndic=".$row['id_syndic']);
$n+= optimiser_sansref('spip_mots_syndic', 'id_syndic', $res);
# les forums lies a des sites effaces
$res = spip_query("SELECT forum.id_forum
$res = spip_query("SELECT forum.id_forum AS id
FROM spip_forum AS forum
LEFT JOIN spip_syndic AS syndic
ON forum.id_syndic=syndic.id_syndic
WHERE syndic.id_syndic IS NULL
AND forum.id_syndic>0");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_forum
WHERE id_forum=".$row['id_forum']);
$n+= optimiser_sansref('spip_forum', 'id_forum', $res);
//
// Auteurs
//
# les liens d'articles sur des auteurs effaces
$res = spip_query("SELECT auteurs_articles.id_auteur,auteurs_articles.id_article
$res = spip_query("SELECT auteurs_articles.id_auteur AS id
FROM spip_auteurs_articles AS auteurs_articles
LEFT JOIN spip_auteurs AS auteurs
ON auteurs_articles.id_auteur=auteurs.id_auteur
WHERE auteurs.id_auteur IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_auteurs_articles
WHERE id_auteur=".$row['id_auteur']
." AND id_article=".$row['id_article']);
$n+= optimiser_sansref('spip_auteurs_articles', 'id_auteur', $res);
# les liens de messages sur des auteurs effaces
$res = spip_query("SELECT auteurs_messages.id_auteur,auteurs_messages.id_message
$res = spip_query("SELECT auteurs_messages.id_auteur AS id
FROM spip_auteurs_messages AS auteurs_messages
LEFT JOIN spip_auteurs AS auteurs
ON auteurs_messages.id_auteur=auteurs.id_auteur
WHERE auteurs.id_auteur IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_auteurs_messages
WHERE id_auteur=".$row['id_auteur']
." AND id_message=".$row['id_message']);
$n+= optimiser_sansref('spip_auteurs_messages', 'id_auteur', $res);
# les liens de rubriques sur des auteurs effaces
$res = spip_query("SELECT auteurs_rubriques.id_auteur,auteurs_rubriques.id_rubrique
$res = spip_query("SELECT auteurs_rubriques.id_rubrique AS id
FROM spip_auteurs_rubriques AS auteurs_rubriques
LEFT JOIN spip_rubriques AS rubriques
ON auteurs_rubriques.id_rubrique=rubriques.id_rubrique
WHERE rubriques.id_rubrique IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_auteurs_rubriques
WHERE id_auteur=".$row['id_auteur']
." AND id_rubrique=".$row['id_rubrique']);
$n+= optimiser_sansref('spip_auteurs_rubriques', 'id_rubrique', $res);
# effacer les auteurs poubelle qui ne sont lies a aucun article
$res = spip_query("SELECT auteurs.id_auteur
$res = spip_query("SELECT auteurs.id_auteur AS id
FROM spip_auteurs AS auteurs
LEFT JOIN spip_auteurs_articles AS auteurs_articles
ON auteurs_articles.id_auteur=auteurs.id_auteur
WHERE auteurs_articles.id_auteur IS NULL
AND auteurs.statut='5poubelle' AND auteurs.maj < $mydate");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_auteurs
WHERE id_auteur=".$row['id_auteur']);
$n+= optimiser_sansref('spip_auteurs', 'id_auteur', $res);
# supprimer les auteurs 'nouveau' qui n'ont jamais donne suite
# au mail de confirmation (45 jours pour repondre, ca devrait suffire)
spip_query("DELETE FROM spip_auteurs WHERE statut='nouveau' AND maj < ". _q(date('Y-m-d', time()-45*24*3600)));exit;
spip_query("DELETE FROM spip_auteurs WHERE statut='nouveau' AND maj < ". _q(date('Y-m-d', time()-45*24*3600)));
//
......@@ -337,110 +311,88 @@ function optimiser_base($attente = 86400) {
//
# supprimer les messages lies a un auteur disparu
$res = spip_query("SELECT messages.id_message
$res = spip_query("SELECT messages.id_message AS id
FROM spip_messages AS messages
LEFT JOIN spip_auteurs AS auteurs
ON auteurs.id_auteur=messages.id_auteur
WHERE auteurs.id_auteur IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_messages
WHERE id_message=".$row['id_message']);
$n+= optimiser_sansref('spip_messages', 'id_message', $res);
//
// Mots-cles
//
$result = spip_query("DELETE FROM spip_mots
WHERE titre='' AND maj < $mydate");
$result = spip_query("DELETE FROM spip_mots WHERE titre='' AND maj < $mydate");
# les liens mots-articles sur des mots effaces
$res = spip_query("SELECT mots_articles.id_mot,mots_articles.id_article
$res = spip_query("SELECT mots_articles.id_mot AS id
FROM spip_mots_articles AS mots_articles
LEFT JOIN spip_mots AS mots
ON mots_articles.id_mot=mots.id_mot
WHERE mots.id_mot IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_mots_articles
WHERE id_mot=".$row['id_mot']
." AND id_article=".$row['id_article']);
$n+= optimiser_sansref('spip_mots_articles', 'id_mot', $res);
# les liens mots-breves sur des mots effaces
$res = spip_query("SELECT mots_breves.id_mot,mots_breves.id_breve
$res = spip_query("SELECT mots_breves.id_mot AS id
FROM spip_mots_breves AS mots_breves
LEFT JOIN spip_mots AS mots
ON mots_breves.id_mot=mots.id_mot
WHERE mots.id_mot IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_mots_breves
WHERE id_mot=".$row['id_mot']
." AND id_breve=".$row['id_breve']);
$n+= optimiser_sansref('spip_mots_breves', 'id_mot', $res);
# les liens mots-forum sur des mots effaces
$res = spip_query("SELECT mots_forum.id_mot,mots_forum.id_forum
$res = spip_query("SELECT mots_forum.id_mot AS id
FROM spip_mots_forum AS mots_forum
LEFT JOIN spip_mots AS mots
ON mots_forum.id_mot=mots.id_mot
WHERE mots.id_mot IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_mots_forum
WHERE id_mot=".$row['id_mot']
." AND id_forum=".$row['id_forum']);
$n+= optimiser_sansref('spip_mots_forum', 'id_mot', $res);
# les liens mots-rubriques sur des mots effaces
$res = spip_query("SELECT mots_rubriques.id_mot,mots_rubriques.id_rubrique
$res = spip_query("SELECT mots_rubriques.id_mot AS id
FROM spip_mots_rubriques AS mots_rubriques
LEFT JOIN spip_mots AS mots
ON mots_rubriques.id_mot=mots.id_mot
WHERE mots.id_mot IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_mots_rubriques
WHERE id_mot=".$row['id_mot']
." AND id_rubrique=".$row['id_rubrique']);
$n+= optimiser_sansref('spip_mots_rubriques', 'id_mot', $res);
# les liens mots-syndic sur des mots effaces
$res = spip_query("SELECT mots_syndic.id_mot,mots_syndic.id_syndic
$res = spip_query("SELECT mots_syndic.id_mot AS id
FROM spip_mots_syndic AS mots_syndic
LEFT JOIN spip_mots AS mots
ON mots_syndic.id_mot=mots.id_mot
WHERE mots.id_mot IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_mots_syndic
WHERE id_mot=".$row['id_mot']
." AND id_syndic=".$row['id_syndic']);
$n+= optimiser_sansref('spip_mots_syndic', 'id_mot', $res);
//
// Forums
//
spip_query("DELETE FROM spip_forum
WHERE statut='redac' AND maj < $mydate");
spip_query("DELETE FROM spip_forum WHERE statut='redac' AND maj < $mydate");
# les liens mots-forum sur des forums effaces
$res = spip_query("SELECT mots_forum.id_mot,mots_forum.id_forum
$res = spip_query("SELECT mots_forum.id_forum AS id
FROM spip_mots_forum AS mots_forum
LEFT JOIN spip_forum AS forum
ON mots_forum.id_forum=forum.id_forum
WHERE forum.id_forum IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_mots_forum
WHERE id_mot=".$row['id_mot']
." AND id_forum=".$row['id_forum']);
$n+= optimiser_sansref('spip_mots_forum', 'id_forum', $res);
if (!$n) spip_log("Optimisation des tables: aucun lien mort");
}
//
// Indexation
//
function optimiser_base_indexation($attente) {
// les objets inutiles
include_spip('inc/indexation');
$liste_tables = liste_index_tables();
......@@ -450,24 +402,18 @@ function optimiser_base($attente = 86400) {
if (strlen($critere)>0)
$critere = "AND $critere";
spip_query("UPDATE $table_objet SET idx=''
WHERE idx<>'non' $critere");
spip_query("UPDATE $table_objet SET idx='' WHERE idx<>'non' $critere");
$suppr = '';
$s = spip_query("SELECT $col_id FROM $table_objet
WHERE idx='' $critere");
while ($t = spip_fetch_array($s,SPIP_NUM))
$suppr .= ','.$t[0];
$s = spip_query("SELECT $col_id FROM $table_objet
WHERE idx='non'");
while ($t = spip_fetch_array($s,SPIP_NUM))
$suppr .= ','.$t[0];
$s = spip_query("SELECT $col_id AS n FROM $table_objet WHERE idx='' $critere");
while ($t = spip_fetch_array($s))
$suppr .= ','.$t['n'];
$s = spip_query("SELECT $col_id AS n FROM $table_objet WHERE idx='non'");
while ($t = spip_fetch_array($s))
$suppr .= ','.$t['n'];
if ($suppr)
spip_query("DELETE FROM spip_index
WHERE id_objet IN (0$suppr) AND id_table=$id_table");
spip_query("DELETE FROM spip_index WHERE id_objet IN (0$suppr) AND id_table=$id_table");
}
spip_log("optimisation terminee");
}
?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter