Un de mes anciens collègues a écrit le UPDATE
suivant dans le cadre d'un script d'importation de données et il faut près de 15 minutes pour terminer sur une table de 92k lignes.Une mise à jour lente de SQL pourrait utiliser un peu d'aide
UPDATE table
SET name = (
SELECT TOP 1 old_name FROM (
SELECT
SUM(r) rev,
number,
name,
intermediate_number,
intermediate_name,
old_number,
old_name
FROM table
GROUP BY
number,
name,
intermediate_number,
intermediate_name,
old_number,
old_name
) t
WHERE t.name = table.name
ORDER BY rev DESC
);
Je suis sûr qu'il peut être réécrite pour être plus efficace, mais toutes mes tentatives ont échoué, ou pas produit les mêmes résultats.
De plus, aucun index n'est défini sur la table. Suggestions appréciées. Je suis sur Sybase iAnywhere 11 si cela compte.
intermediate_number pourrait utiliser des filatures. – David