J'ai relevé sur le forum sqlserver de Microsoft une intéressante question relative aux vues indexées, j'en cite ici quelques extraits, ainsi que les réponses de Fred BROUARD expert en la matière.

A la question Est-ce que sql2000 Server version Standard gère les vues indexées ?
Fred BROUARD répondait :

"En principe toutes les éditions de SQL Server permettent de créer et d'utiliser des vues indexées. Cepandant seule la version entreprise permet d'utiliser une vue indexée, en remplacement d'une requête équivalente."
et précisait:

"Petit exemple :

soit la table dbo.T_EMPLOYEE_EMP dont la structure est :

CREATE TABLE dbo.T_EMPLOYEE_EMP ( EMP_ID int IDENTITY NOT NULL PRIMARY KEY,

   EMP_NOM           char(32) NOT NULL,
   EMP_PRENOM        varchar(25),
   EMP_TITRE         char(8),
   EMP_ADRESSE1      varchar(38),
   EMP_ADRESSE2      varchar(38),
   EMP_ADRESSE3      varchar(38),
   EMP_CP            char(8),
   EMP_VILLE         varchar(32),
   EMP_TEL           char(20),
   EMP_GSM           char(20),
   EMP_DATE_ENTREE   datetime,
   EMP_INDICE        float,
   EMP_SALAIRE       int,
   EMP_MATRICULE     uniqueidentifier DEFAULT NEWID(),
   EMP_SERVICE       varchar(16),
   EMP_SEXE          char(5))

La demande : comptez le nombre d'hommes et de femmes du service RH.

Requête directe sur la table :

SELECT COUNT(*), EMP_SEXE FROM T_EMPLOYEE_EMP WHERE EMP_SERVICE = 'RH' GROUP BY EMP_SEXE

Avec 1 253 500 lignes le coût de la requête sur la table "telle quelle" est de : 32 296 pages lues. (On considére qu'il y a 10 services et 2 sexes)

Avec la création de la vue suivante :

CREATE VIEW V_EMP_SSC WITH SCHEMABINDING AS SELECT COUNT_BIG(*) AS NOMBRE,

      EMP_SEXE AS SEXE,
      EMP_SERVICE AS SERVICE

FROM dbo.T_EMPLOYEE_EMP GROUP BY SEX_ID, SRV_ID GO

et de son index :

CREATE UNIQUE CLUSTERED INDEX X_SSC ON V_EMP_SSC (SERVICE, SEXE) GO

Voici maintenant la requête basée sur cette vue répondant à la même question :

SELECT NOMBRE, SEXE FROM V_EMP_SSC WHERE SERVICE = 'RH'

Le coût de cette requête est de : 2 pages lues. En effet 10 services par 2 sexes cela fait 20 lignes d'environ 32 octets soit 640 octets ce qui tient dans une page (une page = 8060 octets). Mais il faut aussi une page de navigation dans l'index, soit 2 pages à lire...

Le gain est donc de 16 000 fois....

Mais si votre requête est restée celle de départ c'est à dire

SELECT COUNT(*), EMP_SEXE FROM T_EMPLOYEE_EMP WHERE EMP_SERVICE = 'RH' GROUP BY EMP_SEXE

Seule la version Entreprise la remplacera par :

SELECT NOMBRE, SEXE FROM V_EMP_SSC WHERE SERVICE = 'RH'

et le gain effectif sera bien de 16 000 sans que le développeur n'ait eu à modifier sa requête..."
Voila pour la démonstration limpide de Fred BROUARD, qui précise que Seule la version Entreprise....

Il faut se rappeler, pour ceux qui l'oublieraient, que la technologie RUSHMORE fait la force de Visual FoxPro depuis déjà longtemps, et que ce gain de performance peut être obtenu avec une bonne architecture sur des fichiers DBF.

CQFD