Pour reprendre ce que dit beegee, on a aussi les colonnes calculées, qu'on trouve sous SQL Server par exemple, et qui sont indexables (soit en utilisant l'index des champs d'origine, soit en stockant physiquement le résultat et en l'indexant). Mais bon, ça n'existe pas plus sous MySQL que le reste.
Tu as donc la solution de la vue. Niveau perfs, ce sera meilleurs que ta requêtes, mais il ne faut pas t'attendre à un super gain. Par contre c'est l'avantage de ne pas polluer ta table avec des données calculées, tout en conservant un moyen de retrouver ces valeurs simplement.
Reste la solution de créer ton propre système de colonne calculée, à savoir créer un champ Z, et créer deux trigger, un sur insert et un sur update, qui viendront le remplir (c'est l'assurance de ne pas avoir des données incohérentes dans ta table si un jour tu oublies de mettre à jour Z).
Normalement, tout ce dont tu as besoin pour faire ça sont dans MySQL 5
Message édité par MagicBuzz le 19-02-2007 à 14:55:43