Bonjour,

je croyais déja avoir posté cette question mais je ne retrouve pas le topic donc dans le doute je recommence.
Nous alimentons des tables à partir de fichiers xml.
Avec ce fichier, j'alimente une colonne de type xml de ma table (T_Fiche_Icecat).

Pour alimenter ma table ICE_Product à partir du contenu xml, j'utilise la requête suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
insert into ICE_Product
select distinct
		 C.value('./@ID','int')as ProductID	 
		,C.value('./@Code','integer')  as Code	
		,C.value('./@HighPic','varchar(1000)') as HighPic  
		,C.value('./@HighPicHeight','int')  as HighPicHeight	
		,C.value('./@HighPicSize','int') as HighPicSize	
		,C.value('./@HighPicWidth','int')as HighPicWidth	
		,C.value('./@LowPic','varchar(1000)') as	LowPic
		,C.value('./@LowPicHeight','int') as LowPicHeight	
		,C.value('./@LowPicSize','int') as LowPicSize	
		,C.value('./@LowPicWidth','int') as	LowPicWidth
		,C.value('./@Name','varchar(1000)') as Name	
		,C.value('./@Pic500x500','[varchar](1000)') as	Pic500x500
		,C.value('./@Pic500x500Height','int') as Pic500x500Height
		,C.value('./@Pic500x500Size','int') as	Pic500x500Size
		,C.value('./@Pic500x500Width','int') as	 Pic500x500Width 
		,C.value('./@Prod_id','varchar(255)') as Prod_id	
		,C.value('./@Quality','varchar(255)') as Quality  
		,C.value('./@ReleaseDate','datetime') as ReleaseDate	
		,C.value('./@ThumbPic','varchar(1000)') as ThumbPic	
		,C.value('./@ThumbPicSize','int') as ThumbPicSize	 
		,C.value('./@Title','varchar(2000)') as Title
		,null
		,GETDATE()
from T_Fiche_Icecat T 
CROSS APPLY T.ContenuXML.nodes('ICECAT-interface/Product') AS T_XML(C)	
	left join ICE_Product P on P.ProductId=C.value('./@ID','int')
where ContenuXML.exist('ICECAT-interface/Product')=1
	and P.ProductId is null


J'ai posé un index primaire et secondaire de type path sur ma colonne xml.

Mes résultat ne sont pas toujours rapide, meme si je n'ai aucune ligne à ajouter dans ICE_Product.

Pour la jointure avec ma table ICE_Product, est ce que ajouté un index de type value pourrait accelerer mes resultats?
Si oui, dois je respecter une syntaxe particuliere?

Dans la doc msdn, la sybntaxe suivante est indiqué:
//author[LastName="someName"], où vous connaissez la valeur de l'élément <LastName>, mais où le parent <author> peut se placer n'importe où.
/book[@* = "someValue"], où la requête recherche l'élément <book> dont un attribut possède la valeur "someValue".
mais je ne sais pas comment l'appliquer à une jointure.

Merci d'avance pour vos retours.