Bonjour a tous,
j'ai une PS relativement sollicitee, et cette PS fait un traitement lourd.
Ma question est la suivante :
-----------------------------
vaut il mieux, pour accelerer le temps de traitement de cette PS, creer
une table temporaire avec :
declare @matable table {...}
ou en
declare table #matable {...}
L'avantage de la table globale est que l'on peut y mettre des index.
L'utilisation de cette table ? :
--------------------------------
c'est une table temporaire dans la quelle on stocke les resultats des sous
requetes, permettant ainsi a chaque fois des faires des
"select id from xxx where id in (select id from [@#]matable)"
puis de faire un delete + insert dans la [@#]matable des id retrouvés"
(et ceci n fois)
pour info : le serveur a 12 giga de ram, et actuellement seulement 4 est
utilisé.
merci aux experts...
Bonjour a tous,
j'ai une PS relativement sollicitee, et cette PS fait un traitement lourd.
Ma question est la suivante :
-----------------------------
vaut il mieux, pour accelerer le temps de traitement de cette PS, creer
une table temporaire avec :
declare @matable table {...}
ou en
declare table #matable {...}
L'avantage de la table globale est que l'on peut y mettre des index.
L'utilisation de cette table ? :
--------------------------------
c'est une table temporaire dans la quelle on stocke les resultats des sous
requetes, permettant ainsi a chaque fois des faires des
"select id from xxx where id in (select id from [@#]matable)"
puis de faire un delete + insert dans la [@#]matable des id retrouvés"
(et ceci n fois)
pour info : le serveur a 12 giga de ram, et actuellement seulement 4 est
utilisé.
merci aux experts...
Bonjour a tous,
j'ai une PS relativement sollicitee, et cette PS fait un traitement lourd.
Ma question est la suivante :
-----------------------------
vaut il mieux, pour accelerer le temps de traitement de cette PS, creer
une table temporaire avec :
declare @matable table {...}
ou en
declare table #matable {...}
L'avantage de la table globale est que l'on peut y mettre des index.
L'utilisation de cette table ? :
--------------------------------
c'est une table temporaire dans la quelle on stocke les resultats des sous
requetes, permettant ainsi a chaque fois des faires des
"select id from xxx where id in (select id from [@#]matable)"
puis de faire un delete + insert dans la [@#]matable des id retrouvés"
(et ceci n fois)
pour info : le serveur a 12 giga de ram, et actuellement seulement 4 est
utilisé.
merci aux experts...
Bonjour Stéphane,
Quelques petites précisions : quand on parle de tables (#), on parle de
table temporaire locale, propre à la session de l'utilisateur qui l'a crée.
On utilise le caractère ## pour obtenir une table temporaire de portée
global (multi session).
Le troisième type de tables temporaires et le type table variable (@), ce
type de tables à l'inverse des 2 autres n'est généralement pas stocké sur le
disque mais directement en mémoire (sauf en case de dépassement de mémoire),
l'avantage dans ce cas est qu'il ni y a pas de IO sur le disque.
Néanmoins le scope des tables variables n'est pas le même, et leur porté se
limite a la procédure dans laquelle la table est créée.
Il n'est effectivement pas possible de créer des index non-cluster dans un
table variable par contre vous pouvez créer un index cluster qui dans votre
cas devrait suffire.
Microsoft à publié un KB trés interessante à ce sujet, je vous invite à la
consutler à cette adresse
http://support.microsoft.com/default.aspx/kb/305977
Cordialement,
"Steph" wrote in message
news:483129c2$0$862$Bonjour a tous,
j'ai une PS relativement sollicitee, et cette PS fait un traitement lourd.
Ma question est la suivante :
-----------------------------
vaut il mieux, pour accelerer le temps de traitement de cette PS, creer
une table temporaire avec :
declare @matable table {...}
ou en
declare table #matable {...}
L'avantage de la table globale est que l'on peut y mettre des index.
L'utilisation de cette table ? :
--------------------------------
c'est une table temporaire dans la quelle on stocke les resultats des sous
requetes, permettant ainsi a chaque fois des faires des
"select id from xxx where id in (select id from [@#]matable)"
puis de faire un delete + insert dans la [@#]matable des id retrouvés"
(et ceci n fois)
pour info : le serveur a 12 giga de ram, et actuellement seulement 4 est
utilisé.
merci aux experts...
Bonjour Stéphane,
Quelques petites précisions : quand on parle de tables (#), on parle de
table temporaire locale, propre à la session de l'utilisateur qui l'a crée.
On utilise le caractère ## pour obtenir une table temporaire de portée
global (multi session).
Le troisième type de tables temporaires et le type table variable (@), ce
type de tables à l'inverse des 2 autres n'est généralement pas stocké sur le
disque mais directement en mémoire (sauf en case de dépassement de mémoire),
l'avantage dans ce cas est qu'il ni y a pas de IO sur le disque.
Néanmoins le scope des tables variables n'est pas le même, et leur porté se
limite a la procédure dans laquelle la table est créée.
Il n'est effectivement pas possible de créer des index non-cluster dans un
table variable par contre vous pouvez créer un index cluster qui dans votre
cas devrait suffire.
Microsoft à publié un KB trés interessante à ce sujet, je vous invite à la
consutler à cette adresse
http://support.microsoft.com/default.aspx/kb/305977
Cordialement,
"Steph" <steph@pipoland.com> wrote in message
news:483129c2$0$862$ba4acef3@news.orange.fr...
Bonjour a tous,
j'ai une PS relativement sollicitee, et cette PS fait un traitement lourd.
Ma question est la suivante :
-----------------------------
vaut il mieux, pour accelerer le temps de traitement de cette PS, creer
une table temporaire avec :
declare @matable table {...}
ou en
declare table #matable {...}
L'avantage de la table globale est que l'on peut y mettre des index.
L'utilisation de cette table ? :
--------------------------------
c'est une table temporaire dans la quelle on stocke les resultats des sous
requetes, permettant ainsi a chaque fois des faires des
"select id from xxx where id in (select id from [@#]matable)"
puis de faire un delete + insert dans la [@#]matable des id retrouvés"
(et ceci n fois)
pour info : le serveur a 12 giga de ram, et actuellement seulement 4 est
utilisé.
merci aux experts...
Bonjour Stéphane,
Quelques petites précisions : quand on parle de tables (#), on parle de
table temporaire locale, propre à la session de l'utilisateur qui l'a crée.
On utilise le caractère ## pour obtenir une table temporaire de portée
global (multi session).
Le troisième type de tables temporaires et le type table variable (@), ce
type de tables à l'inverse des 2 autres n'est généralement pas stocké sur le
disque mais directement en mémoire (sauf en case de dépassement de mémoire),
l'avantage dans ce cas est qu'il ni y a pas de IO sur le disque.
Néanmoins le scope des tables variables n'est pas le même, et leur porté se
limite a la procédure dans laquelle la table est créée.
Il n'est effectivement pas possible de créer des index non-cluster dans un
table variable par contre vous pouvez créer un index cluster qui dans votre
cas devrait suffire.
Microsoft à publié un KB trés interessante à ce sujet, je vous invite à la
consutler à cette adresse
http://support.microsoft.com/default.aspx/kb/305977
Cordialement,
"Steph" wrote in message
news:483129c2$0$862$Bonjour a tous,
j'ai une PS relativement sollicitee, et cette PS fait un traitement lourd.
Ma question est la suivante :
-----------------------------
vaut il mieux, pour accelerer le temps de traitement de cette PS, creer
une table temporaire avec :
declare @matable table {...}
ou en
declare table #matable {...}
L'avantage de la table globale est que l'on peut y mettre des index.
L'utilisation de cette table ? :
--------------------------------
c'est une table temporaire dans la quelle on stocke les resultats des sous
requetes, permettant ainsi a chaque fois des faires des
"select id from xxx where id in (select id from [@#]matable)"
puis de faire un delete + insert dans la [@#]matable des id retrouvés"
(et ceci n fois)
pour info : le serveur a 12 giga de ram, et actuellement seulement 4 est
utilisé.
merci aux experts...
Bonjour a tous,
j'ai une PS relativement sollicitee, et cette PS fait un traitement lourd.
Ma question est la suivante :
-----------------------------
vaut il mieux, pour accelerer le temps de traitement de cette PS, creer
une table temporaire avec :
declare @matable table {...}
ou en
declare table #matable {...}
L'avantage de la table globale est que l'on peut y mettre des index.
L'utilisation de cette table ? :
--------------------------------
c'est une table temporaire dans la quelle on stocke les resultats des
sous requetes, permettant ainsi a chaque fois des faires des
"select id from xxx where id in (select id from [@#]matable)"
puis de faire un delete + insert dans la [@#]matable des id retrouvés"
(et ceci n fois)
pour info : le serveur a 12 giga de ram, et actuellement seulement 4 est
utilisé.
merci aux experts...
Bonjour a tous,
j'ai une PS relativement sollicitee, et cette PS fait un traitement lourd.
Ma question est la suivante :
-----------------------------
vaut il mieux, pour accelerer le temps de traitement de cette PS, creer
une table temporaire avec :
declare @matable table {...}
ou en
declare table #matable {...}
L'avantage de la table globale est que l'on peut y mettre des index.
L'utilisation de cette table ? :
--------------------------------
c'est une table temporaire dans la quelle on stocke les resultats des
sous requetes, permettant ainsi a chaque fois des faires des
"select id from xxx where id in (select id from [@#]matable)"
puis de faire un delete + insert dans la [@#]matable des id retrouvés"
(et ceci n fois)
pour info : le serveur a 12 giga de ram, et actuellement seulement 4 est
utilisé.
merci aux experts...
Bonjour a tous,
j'ai une PS relativement sollicitee, et cette PS fait un traitement lourd.
Ma question est la suivante :
-----------------------------
vaut il mieux, pour accelerer le temps de traitement de cette PS, creer
une table temporaire avec :
declare @matable table {...}
ou en
declare table #matable {...}
L'avantage de la table globale est que l'on peut y mettre des index.
L'utilisation de cette table ? :
--------------------------------
c'est une table temporaire dans la quelle on stocke les resultats des
sous requetes, permettant ainsi a chaque fois des faires des
"select id from xxx where id in (select id from [@#]matable)"
puis de faire un delete + insert dans la [@#]matable des id retrouvés"
(et ceci n fois)
pour info : le serveur a 12 giga de ram, et actuellement seulement 4 est
utilisé.
merci aux experts...
Le mieux est de s'en passer. Depuis SQL Server 2005 les CTE et donc la
récursivité, rare sont les traitements qui ont effectivement besoin
d'une table temporaire...
A +
Steph a écrit :Bonjour a tous,
j'ai une PS relativement sollicitee, et cette PS fait un traitement
lourd.
Ma question est la suivante :
-----------------------------
vaut il mieux, pour accelerer le temps de traitement de cette PS,
creer une table temporaire avec :
declare @matable table {...}
ou en
declare table #matable {...}
L'avantage de la table globale est que l'on peut y mettre des index.
L'utilisation de cette table ? :
--------------------------------
c'est une table temporaire dans la quelle on stocke les resultats des
sous requetes, permettant ainsi a chaque fois des faires des
"select id from xxx where id in (select id from [@#]matable)"
puis de faire un delete + insert dans la [@#]matable des id retrouvés"
(et ceci n fois)
pour info : le serveur a 12 giga de ram, et actuellement seulement 4
est utilisé.
merci aux experts...
Le mieux est de s'en passer. Depuis SQL Server 2005 les CTE et donc la
récursivité, rare sont les traitements qui ont effectivement besoin
d'une table temporaire...
A +
Steph a écrit :
Bonjour a tous,
j'ai une PS relativement sollicitee, et cette PS fait un traitement
lourd.
Ma question est la suivante :
-----------------------------
vaut il mieux, pour accelerer le temps de traitement de cette PS,
creer une table temporaire avec :
declare @matable table {...}
ou en
declare table #matable {...}
L'avantage de la table globale est que l'on peut y mettre des index.
L'utilisation de cette table ? :
--------------------------------
c'est une table temporaire dans la quelle on stocke les resultats des
sous requetes, permettant ainsi a chaque fois des faires des
"select id from xxx where id in (select id from [@#]matable)"
puis de faire un delete + insert dans la [@#]matable des id retrouvés"
(et ceci n fois)
pour info : le serveur a 12 giga de ram, et actuellement seulement 4
est utilisé.
merci aux experts...
Le mieux est de s'en passer. Depuis SQL Server 2005 les CTE et donc la
récursivité, rare sont les traitements qui ont effectivement besoin
d'une table temporaire...
A +
Steph a écrit :Bonjour a tous,
j'ai une PS relativement sollicitee, et cette PS fait un traitement
lourd.
Ma question est la suivante :
-----------------------------
vaut il mieux, pour accelerer le temps de traitement de cette PS,
creer une table temporaire avec :
declare @matable table {...}
ou en
declare table #matable {...}
L'avantage de la table globale est que l'on peut y mettre des index.
L'utilisation de cette table ? :
--------------------------------
c'est une table temporaire dans la quelle on stocke les resultats des
sous requetes, permettant ainsi a chaque fois des faires des
"select id from xxx where id in (select id from [@#]matable)"
puis de faire un delete + insert dans la [@#]matable des id retrouvés"
(et ceci n fois)
pour info : le serveur a 12 giga de ram, et actuellement seulement 4
est utilisé.
merci aux experts...