les vues et les index
Post on 14-Apr-2018
220 Views
Preview:
TRANSCRIPT
-
7/30/2019 Les Vues Et Les Index
1/17
Les vues et les indexVersion 1.0
Grgory CASANOVA
James RAVAILLE
http://blogs.dotnet-france.com/jamesr
http://blogs.dotnet-france.com/jamesrhttp://blogs.dotnet-france.com/jamesrhttp://blogs.dotnet-france.com/jamesr -
7/30/2019 Les Vues Et Les Index
2/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
2 Les vues et les index [03/07/09]
Sommaire
1 Introduction ..................................................................................................................................... 3
1.1 Prsentation ............................................................................................................................ 3
1.2 Pr-requis ................................................................................................................................ 3
2 Prsentation des vues ..................................................................................................................... 4
2.1 Gnralits sur les vues ........................................................................................................... 4
2.2 Cration dune vue .................................................................................................................. 4
2.2.1 Avec du code T-SQL ......................................................................................................... 4
2.2.2 Avec SSMS ....................................................................................................................... 6
2.3 Suppression dune vue ............................................................................................................ 9
2.3.1 Avec du code T-SQL ......................................................................................................... 9
2.3.2 Avec SSMS ....................................................................................................................... 9
3 Les index ........................................................................................................................................ 11
3.1 Gnralits sur les index ....................................................................................................... 11
3.2 Index ordonns ou non ? ....................................................................................................... 11
3.2.1 Les index organiss (index cluster) ................................................................................ 11
3.2.2 Les index non organiss(index non-cluster) .................................................................. 12
3.3 Crer un index ....................................................................................................................... 12
3.4 Supprimer un index ............................................................................................................... 13
3.5 Reconstruire un index ........................................................................................................... 13
3.6 Mettre jour les statistiques ................................................................................................ 14
4 Conclusion ..................................................................................................................................... 17
-
7/30/2019 Les Vues Et Les Index
3/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
3 Les vues et les index [03/07/09]
1 Introduction1.1 Prsentation
Dans les chapitres prcdents, en particulier les chapitres 2 et 3, nous avons prsent les
bases de donnes SQL Server, ainsi que les objets quelles peuvent contenir. On appelle objet dune
base de donnes, toute entit qui peut tre comprise dans une base de donnes.
Nous allons continuer de prsenter ces objets dans ce chapitre, et introduisant et en
approfondissant les notions concernant les vues et dindex dans une base de donnes, en prsentant
quels sont leurs buts principaux, et comment les grer.
1.2 Pr-requisPour une bonne comprhension de ce chapitre, vous aurez besoin au pralable davoir lu les
sujets suivants :
- La manipulation de SSMS et de ses fonctionnalits (Chapitre 1).- Connaitre les gnralits sur les bases de donnes relationnelles (Chapitre 2).- Matriser la plupart des actions possibles sur des objets de la base, en tout cas celles que
nous avons vues (Chapitre 3 et 4). Il est important de noter que nous avons dfini ces
actions comme tant des actions du DDL dans le chapitre prcdant.
-
7/30/2019 Les Vues Et Les Index
4/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
4 Les vues et les index [03/07/09]
2 Prsentation des vues2.1 Gnralits sur les vues
SQL Server 2008 permet la gestion dobjets associs aux tables, les vues. On peu t dfinir une
vue comme tant une table dite virtuelle, qui a la mme utilisation quune table, simplement une vue
ne prend pas despace sur le disque, puisquelle ne stocke pas les donnes comme une table. Elle nestocke que la requte dextraction des donnes (SELECT).
Les vues sont un grand avantage quand la gestion des donnes, vis--vis de lutilisateur final.
En effet, elles permettent tout dabord de simplifier la structure des tables, qui peuvent parfois
comporter une multitude de colonnes. On pourra alors choisir, en fonction de lutilisateur, les
colonnes dont il aura besoin, et ninclure que ces colonnes dans notre vue. Une vue peut aussi
permettre la rutilisation des requtes. En effet, lorsque certaines requtes sont souvent utilises,
une vue permettra de stocker cette requte et de lutiliser plus facilement. Et bien entendu, latout
majeur des vues : la scurit daccs aux donnes. Il sera possible au travers de vues, de ne donner
accs un ou des utilisateurs particuliers, que les colonnes dune table que nous voulons quil voie,et pas les autres. Ce contrle se fait grce la gestion des droits dutilisateurs et de groupes (Ce sujet
est trait dans la partie Administration de SQL Server 2008). Comme tout les autres objets dune base
de donnes, on peut crer une vue de deux manires. Par linterface graphique, ou bien par des
instructions T-SQL dans le registre DDL. Les vues proposent donc des avantages quant leur
cration :
- Simplification de la structure des tables.- Rutilisation des requtes.- Scuritdaccs.
Important : La quasi-totalit des instructions du DML sont applicables sur les vues (INSERT, UPDATE,
DELETE). Il faut simplement faire attention lors de linsertion aux colonnes nacceptant pas les
valeurs NULL. De plus, linsertion de donnes au travers dune vue agrgeant des colonnes provenant
de plusieurs tables est impossible.
2.2 Cration dune vue2.2.1 Avec du code T-SQL
La syntaxe de cration dune vue avec du code T-SQL est simple. On utilisera linstructionCREATE, comme pour toute cration dobjet dans une base de donnes.
Nous utilisons linstruction CREATEVIEW, auquel nous associons le nom que nous voulons lui
donner. Le mot cl AS indique que nous allons spcifier la requte SELECT qui va nous permettre de
slectionner les colonnes dune ou plusieurs tables, afin den copier les proprits dans la vue que
nous crons. Il est bon de prciser que des clauses existantes pour une instruction SELECT classiquene conviendra pas pour une instruction SELECT servant crer nos vues. Ces instructions ne doivent
pas tre autre que linstruction SELECT, et les clauses FROM et WHERE. Concernant les options 1 et
2 : loption 1 correspond aux options suivantes : WITH ENCRYPTION, WITH SCHEMABINDING, WITH
CREATEVIEWNom_Vue[options1]ASrequte [options2]
-
7/30/2019 Les Vues Et Les Index
5/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
5 Les vues et les index [03/07/09]
VIEW_METADATA ; et loption 2 correspond loption suivant : WITH WHECK OPTION. Dcouvrons
les actions de chacune des ces options sur notre vue.
WITH ENCRYPTION : permet de crypter le code dans les tables systme. Attention : personnene peut consulter le code de la vue, mme pas son crateur. Lors de la modification de la vue
avec linstruction ALTER VIEW, il sera ncessaire de prciser de nouveau cette option pour
continuer protger le code de la vue.
WITH SCHEMABINDING : permet de lier la vue au schma. Avec cette option, il est impratifde nommer nos objets de la faon suivante : schma.objet.
WITH VIEW_METADATA : permet de demander SQL Server de renvoyer les mtadonnescorrespondantes la vue, et non celles qui composent la vue.
WITH WHECK OPTION : permet de ne pas autoriser linsertion ni la modification des donnesne correspondant pas aux critres de la requte.
Voici un exemple :
Cet exemple permet de crer une vue dont le nom est Ma_Premire_Vue , avec loption
WITH ENCRYPTION, et cette vue contiendra les colonnes Id_Client_archive et
Id_Commande_archive de la table Archive. Vous pourrez alors retrouver votre vue dans le sous
dossier de votre explorateur dobjet, comme prsent dans limage ci-dessous :
CREATEVIEWMa_Premiere_VueWITHENCRYPTIONASSELECTId_Client,Nom_ClientFROMdbo.Client
-
7/30/2019 Les Vues Et Les Index
6/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
6 Les vues et les index [03/07/09]
2.2.2 Avec SSMSIl est trs intuitif de crer une vue grce SSMS. Pour de faire, de manire graphique, il vous
suffit deffectuer un click droit sur le sous dossier Vues dans votre base de donnes, affiche dans
lexplorateur dobjet. Aprs avoir effectu le click droit, slectionnez Nouvelle vue
Aprs avoir cliqu sur Nouvelle vue, les deux fentres suivantes apparaissent au sein
mme de SSMS. La premire vous aidera slectionner des tables sur lesquelles la vue portera. La
seconde vous permet de slectionner les colonnes utiliser et construire votre requte.
-
7/30/2019 Les Vues Et Les Index
7/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
7 Les vues et les index [03/07/09]
Pour ajouter une table, cliquez sur le nom de la table voulue, et slectionnez Ajouter .
Vous pouvez en ajouter plusieurs, via lutilisation de la touche [Control]. On remarquera que les
tables, aussitt slectionnes, sont modlises dans la partie suprieure de la seconde fentre.
-
7/30/2019 Les Vues Et Les Index
8/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
8 Les vues et les index [03/07/09]
Pour slectionner les colonnes mettre dans votre vue, cochez les cases correspondant vos
colonnes dans les tables modlises dans la partie suprieure de la fentre. Lorsque lon coche des
cases, on peut remarquer que le nom de ses colonnes est ajout dans la partie centrale de la fentre.
-
7/30/2019 Les Vues Et Les Index
9/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
9 Les vues et les index [03/07/09]
On peut alors modifier le type de tri, lordre, ou encore le filtre de cette vue en changeant les
caractristiques dans la mme partie. Toutes les actions effectues permettront de gnrer le code
de la vue. Voici un exemple :
Lorsque vous avez fini de concevoir votre vue, faites un clic droit sur longlet de la fentre
dans SSMS, et choisissez Enregistrer . Donnez-lui un nom. Vous venez de crer votre vue.
2.3 Suppression dune vue2.3.1 Avec du code T-SQL
La structure de suppression dune vue est la mme que pour tout objet de la base de
donnes. Elle est la suivante :
2.3.2 Avec SSMSAvec SSMS, il vous suffit deffectuer un clicdroit sur la vue dans lexplorateur dobjet et de
slectionner Supprimer et de cliquer sur ok dans la nouvelle fentre qui apparait.
DROPVIEWnom_vue
-
7/30/2019 Les Vues Et Les Index
10/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
10 Les vues et les index [03/07/09]
Grce au bouton, Afficher les Dpendances , Il est possible de mettre en vidence les
dpendances existantes entre les objets de la base et la vue slectionne. Une nouvelle fentre
saffiche lcran, dans laquelle vous pourrez choisir les diffrents types de dpendances.
Il vous suffit juste de savoir si vous voulez afficher les objets dpendants de la vue ou ceux dont
dpend la vue en question.
-
7/30/2019 Les Vues Et Les Index
11/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
11 Les vues et les index [03/07/09]
3 Les index3.1 Gnralits sur les index
Les index que nous allons prsenter dans ce chapitre, sont similaires aux index qui sont
prsents dans un livre par exemple, ou sur un site web. Si le but de lindex dun livre est de nous
permettre daccder plus rapidement au sujet qui nous intresse dans ce livre, il en est de mmepour les index dans la base de donnes, la diffrence que ces index vont nous permettre de
retrouver plus rapidement les donnes stockes dans la base. Si les index permettent de retrouver
des donnes plus rapidement dans la base de donnes, ils ont un inconvnient majeur : ils sont
couteux en mmoire et espace disque, surtout dans le cas de mises jours de colonnes indexes. Il
faut bien garder en tte que les donnes vises par lindex y sont contenues, et donc que ces
donnes occupent un espace disque non ngligeable. Il est donc ncessaire de bien dfinir la
stratgie dindexation adopter en fonction des raisons voques plus haut, desquelles on peut
tablir deux rgles importantes :
- Il est mieux davoir trop peu dindex que trop. Imaginez quun index existe pour chaquepage dune livre. Il reviendra au mme de feuilleter le livre page page pour trouver ce
que lon cherche.
- Les index doivent tre le plus large possible afin de pouvoir tre utiliss par plusieursrequtes.
Il existe plusieurs types dindex (index ou index-cluster, unique ou non unique). Dans ce
cours nous mettrons davantage laccent sur leur cration, mise jour et suppression. Nous ne
traiterons pas des index XML, car leur indexation est particulire. Nous le traiterons dans un chapitre
propre au traitement des donnes de type XML. De plus, le partitionnement dindex est possible,
mais cest une solution assez avance en termes de difficult. Nous le traiterons dans un chapitreultrieur.
Remarque : il faut bien garder en tte que les index sont les catalyseurs de nos requtes. Ils vont
permettre sur un serveur de plus grande envergure, dobtenir des temps de rponse de plus en plus
courts, du fait que la requte naura pas accder et parcourir la totalit des donnes dans les
tables, mais accdera un nombre beaucoup moins consquent de donnes dans notre index.
3.2 Index ordonns ou non ?Sql server propose deux types dindex pour ses bases de donnes, les index organiss ou
ordonns (un seul par table), et les index non organiss ou non ordonns (aucun, un ou plusieurs par
table). Chaque type dindex possde ses avantages et ses inconvnients. Prenons le temps
dexpliquer les caractristiques de chacun deux.
3.2.1 Les index organiss (index cluster)Sur chaque table de votre base de donnes, il nest possible de crer quun et un seul index
organis. Ce type dindex permet dorganiser physiquement les donnes dune table en fonction
dune colonne. Pour prendre un exemple, une table qui possde une cl primaire possde aussi un
index ordonn, cest pourquoi les donnes sont ranges en fonction de la colonne o est dfinit la cl
-
7/30/2019 Les Vues Et Les Index
12/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
12 Les vues et les index [03/07/09]
primaire. Ce type dindex est coteux en temps et espace disque pour le serveur lors de la
construction ou la reconstruction de celui-ci. Il est bon de noter que si des index non ordonns
existent dj sur une table, la construction dun index sera dautant plus longue quil y aura un
nombre consquent dindex non ordonns dfinis sur cette table. Enfin, il est bon dviter de dfinir
des index ordonns sur des champs tels que des noms ou des prnoms, car cette pratique mne
irrmdiablement la dgradation des performances du serveur.
3.2.2 Les index non organiss (index non-cluster)Les index non organiss sont les index privilgier pour couvrir plusieurs requtes dans SQL
Server. En effet, leur utilisation reste couteuse en espace disque, mais les requtes vitent un accs
inutile la table, puisque seul lindex est manipul. Les performances sont alors amliores
grandement, puisque la totalit des donnes nest pas manipule, mais seulement une partie des
donnes, celle stocke dans lindex.
3.3 Crer un indexUn index peut tre cr nimporte quel moment, quil y ait ou non des donnes dans la table.
Simplement, il est prfrable de crer lindex aprs une importation majeure de donnes, pour viter
avoir le reconstruire par la suite, ce qui causera une perte consquente de temps au niveau
serveur. Voici la syntaxe gnrale de cration dun index, que celui-ci soit ordonn ou non :
Pour crer un index, nous nous servons de linstruction CREATE INDEX. Les choix compris
entre les mots cls CREATE et INDEXservent dcider si lindex doit tre ordonn ou non, et sil
doit tre unique. Avec la clause ON, on dfinit sur quelles colonnes porte lindex et avec la clause
INCLUDE, on passe en paramtres plus de colonnes de la mme table, afin que les requtes naient
qu chercher dans lindex lorsquelles sexcutent. La clause ON en toute fin de lot permet de dfinir
sur quel groupe de fichier nous allons placer notre index. On peut noter que si le groupe de fichier
nest pas prcis, lindex sera plac dans le groupe de fichier principal. A la suite de la clause WITH,
nous trouvons les diffrentes options des index, qui par dfaut sont toutes dsactives (OFF) mis
part FILLFACTOR. Voici le dtail des services que proposent ces options :
- PAD_INDEX: Prcise le niveau de remplissage du niveau non feuille. Cette option nestutilisable quavec FILLFACTOR dont la valeur est reprise.
- FILLFACTOR : Prcise le pourcentage de remplissage des pages dindex au niveaufeuille. La valeur par dfaut est 0.
- IGNORE_DUP_KEY : Cette option autorise les entres doubles dans les index de typeUNIQUE.
- DROP_EXISTING : Prcise que lindex existant doit tre supprim.
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEXNom_IndexONNom_Table(Nom_Colonnes1)[INCLUDE(Nom_Colonnes2)][WITH][PAD_INDEXOFF], [FILLFACTOR=x],[IGNORE_DUP_KEY=OFF], [DROP_EXISTINGOFF],[ONLINE=OFF], [STATISTICS_NORECOMPUTE=OFF][ONNom_Groupe_Fichier]
-
7/30/2019 Les Vues Et Les Index
13/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
13 Les vues et les index [03/07/09]
- ONLINE : Lorsque cette option est active, les donnes de la tables restent accessiblesen lecture, lors de la cration de lindex.
- STATISTICS_NORECOMPUTE : Dsactiv, cette option prcise que les statistiques neseront pas mise jour.
Nous allons maintenant crer un index non ordonn sur notre base de donnes Entreprise,
base de donnes dont nous nous servons pour tous nos exemples dans ce cours. Cette base est
accessible en annexe. Prenons un exemple simple. Dans notre table Client de la base de donnes
Entreprise, le mail des client peut tre la valeur NULL. De plus, on remarque que le champ
Mail_Client nest occup que pour 50% des cas, soit un cas sur deux. Laccs aux donnes est donc
ralenti par le fait que la plupart des donnes sont NULL. On peu donc crer un index non organis
de cette manire :
Avec ce segment de code, nous allons crer un index non organis, qui sappelle Index_Mail,
sur la table Client, pour la colonne Mail_Client, laquelle nous incluons Id_Client. Cet index va
rcuprer toutes les informations de la table Client pour laquelle Mail_Client nest pas NULL, ce qui
va nous permettre dacclrer nos requtes de faon consquente, dans le cas o la masse de
donnes sur la base est consquente.
3.4 Supprimer un indexComme chacun le sait dsormais, le mot cl pour supprimer un objet de la base est le mot
DROP. Nous allons encore une fois lutiliser afin de pouvoir supprimer un index de la base. Voici la
commande type de suppression dun index :
La suppression dindex peut avoir plusieurs origines. La plus frquente est la suivante.
Lorsquun index est trop couteux en maintenance et quil noffre pas de performances significativessur les requtes, il peut tre prfrable de le supprimer.
3.5 Reconstruire un indexAutrefois, sur les versions antrieures SQL Server 2008, la commande de reconstruction
dindex tait la suivante : DBCC DBREINDEX. Pour des soucis de compatibilit, cette instruction est
maintenue, mais il est prfrable de ne plus lutiliser dans le cadre dun nouveau dveloppement.
Maintenant, il est possible de reconstruire un index avec linstruction ALTER INDEX. Cette
instruction va nous permettre de reconstruire un index particulier, ou tous les index dune table enparticulier. Lors de cette instruction, nous pouvons changer les caractristiques de lindex que nous
avons pu proposer lors de sa construction (FILLFACTOR, PAD_INDEX). La syntaxe de
reconstruction est la suivante :
-- DROP INDEX Nom_Index ON Nom_Table
DROPINDEXIndex_MailONClient
CREATENONCLUSTEREDINDEXIndex_MailONClient(Mail_Client)INCLUDE(Id_Client)
WHEREMail_ClientISNOTNULL
-
7/30/2019 Les Vues Et Les Index
14/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
14 Les vues et les index [03/07/09]
A la suite de linstruction ALTERINDEX,il est ncessaire de prciser le nom du ou des index
reconstruire, ou bien de prciser si lon veut que tous les index soient reconstruits en prcisant le
mot cl ALL. La clause ON permet de prciser de quelle table sont originaires les ventuels index
reconstruire et le mot cl REBUILD permet de prciser que lon veut reconstruire ces index. La
dernire clause WITH permet quant elle de prciser les caractristiques des index reconstruire.
Toutes les options contenues dans le WITH fonctionnent de la mme manire que pour la simple
construction de lindex.
3.6 Mettre jour les statistiquesSQL Server utilise des informations statistiques pour optimiser les requtes. Ces informations
doivent tre mises jour avant une modification importante des donnes. Deux mthodes de mise
jour de ces informations sont possibles : la manuelle et lautomatique. En revanche, il est fortement
conseill dutiliser les fonctions automatiques de mise jour de statistiques, pour une unique raison.
Dans la plupart des cas, la dgradation des performances au niveau serveur est cause
majoritairement ou en totalit par le fait que ces mises jour statistiques nont pas t faites. Nous
allons donc prsenter la manire employer pour les mettre jour manuellement, simplement, il est
fortement conseill de les mettre jour avec le systme automatique. La syntaxe de mise jour des
statistiques est la suivante :
Pour mettre jour les statistiques, la syntaxe prsente est la bonne. UPDATESTATICS
nous permet dannoncer que nous allons mettre jour les statistiques. Il est alors ncessaire de
prciser le nom de la table concerne, et le nom des index dont les statistiques doivent tre mise
jour. Si le nom des index est omis, toutes les statistiques de touts les index seront mis jour. La
clause WITH permet de prciser les modes de mise jour que nous allons utiliser. Dtaillons les
options possibles :
- FULLSCAN : Les statistiques vont tre cres avec un balayage complet de la table, soit100% des lignes contenues dans la table prcise en paramtre.
- SAMPLE : Les statistiques vont tre tablies partir dun chantillon reprsentatif desinformations contenues dans la table prcise en paramtre. La valeur n reprsente la
valeur que nous voulons des lignes prendre en compte pour notre chantillon, quand
aux mots cls PERCENT et ROWS, ils permettent de savoir dans lordre, si la valeur de n
comprend une valeur en pourcentage ou une valeur en nombre de lignes de la table
indique.
- RESAMPLE : Permet de redfinir les statistiques partir dun nouvel chantillonnage.
UPDATESTATICSNom_TableNom_IndexsWITH (FULLSCAN|SAMPLEn(PERCENT|ROWS)|RESAMPLE)
ALTERINDEX (Nom_Index|ALL)ONNom_TableREBUILD[WITH][PAD_INDEX OFF],[FILLFACTOR = x],[IGNORE_DUP_KEY = OFF],[DROP_EXISTING OFF],[ONLINE = OFF],[STATISTICS_NORECOMPUTE = OFF]
[ON Nom_Groupe_Fichier]
-
7/30/2019 Les Vues Et Les Index
15/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
15 Les vues et les index [03/07/09]
Comme dit prcdemment, la mise jour des statistiques de manire manuelle est
proscrire, dans le sens o les mises jour automatiques sont possibles et que les performances de
notre serveur en dpendent. Voyons de quelle manire nous allons oprer pour permettre nos
bases de mettre jour automatiquement les statistiques de nos index. Deux manires existent pour
arriver nos fins. Par linstruction ALTER DATABASE ou par la procdure stocke systme
sp_autostats. Il faut simplement analyser les besoins que nous avons. Voyons avec les deux optionspossibles :
- Avec ALTER DATABASE :
Il suffit de prciser le nom de la base aprs linstruction et de mettre ON loption
AUTO_CREATE_STATISTICS . Ceci permet la mise jour automatique des statistiques.
- Avec sp_autostats :
Lutilisation de la procdure stocke sp_autostats ncessite trois arguments maximum
dont un seul obligatoire, le nom de la table sur laquelle nous voulons appliquer la mise jour
automatique des statistiques.
3.7 Les vues indexesLes vues indexes ont un unique objectif, comme tout autre objet index dans la base de
donnes : amliorer les performances de nos requtes. Celles-ci sont surement les objets de la base
offrant le plus de gain de performance dans SQL Server. On se sert le plus souvent de ce type de
vues, sur des bases de donnes OLAP, c'est--dire pour des donnes qui vont tre le plus souvent en
lecture, et trs peu mises jour. Ces index sont en particulier pratiques pour des requtes
ncessitant des jointures et des agrgations. La vue indexe a pour effet de matrialiser les donnes.
On prend le rsultat de la requte et on le stocke dans lindex. On met ensuite jour lindex en
fonction des modifications sur la table de base. La cration dun index sur une vue ce fait de la mme
manire que pour une table, simplement, un index sur une vue prsente de caractres propres de
fonctionnement et de comportement que nous avons commenc prsenter. Pour une version
Entreprise de SQL Server, ds lors que votre index est cr, le moteur de base de donnes utiliseracelui-ci. En revanche, pour les autres versions de SQL Server, il faut prciser si lon veut utiliser
lindex. La mthode est la suivante :
La clause WITH(NOEXPAND)spcifie quaucune vue indexe nest tendue pour permettre daccder
aux tables sous-jacentes lorsque loptimiseur de requte traite la requte. Loptimiseur de requte
traite la vue comme une table avec un index cluster. NOEXPAND sapplique uniquement aux vues
indexes. Des contraintes sont noter. En effet, il nest possible de crer un index sur une vue que si
les conditions suivantes sont rassembles :
- Lors de la cration de la vue, les options ANSI_NULLS et QUOTED IDENTIFIER doivent tresur ON.
SELECT*FROMvue_ClientWITH(NOEXPAND)
execsp_autostatsClient
ALTERDATABASEEntrepriseSETAUTO_CREATE_STATISTICSON
-
7/30/2019 Les Vues Et Les Index
16/17
Dotnet France Association CASANOVA Grgory / James RAVAILLE
16 Les vues et les index [03/07/09]
- ANSI_NULL doit tre ON lors de la cration de toutes les tables rfrences dans la vuesur laquelle sera cr lindex.
- La vue ne doit pas faire rfrence dautres vues.- Toutes les tables rfrences doivent appartenir la mme base et au mme
propritaire.
- La vue doit tre cre avec loption WITH SCHEMABINDING.Le premier index cr sur une vue doit tre de type cluster unique. Par la suite il est possible de
construire des index non cluster.
Pour faire un rsum rapide, les vues indexes sont pratiques et efficaces dans le cas ou une vue
possde une quantit remarquable de jointures et dagrgations, et que ces donnes sont surtout en
lecture sur la base. Enfin, pour une cration sans erreurs de lindex, certaines conditions doivent tre
respectes.
-
7/30/2019 Les Vues Et Les Index
17/17
17 Les vues et les index [03/07/09]
4 ConclusionDans ce chapitre, nous avons vu deux objets supplmentaires dans la base : les vues et les
index. Retenez principalement quune vue est une table virtuelle qui ne stocke pas les donnes mais
les requtes dextractions associes, et que les index peuvent appartenir deux catgories
diffrentes, ordonns et non ordonns, et que ceux-ci servent optimiser le temps de rponse du
serveur lors de lexcution de requtes. Dans le chapitre suivant, nous verrons les notions deprocdures stockes et de fonctions utilisateurs, largement utilises dans SQL Server, puisquelles
permettent une grande programmabilit et un gain de performance important.
top related