2010-07-15 5 views
0

Dans notre application Web, nous créons une table de session dans la base de données pour stocker les données temporaires. Ainsi, la table temporaire sera créée et détruite pour chaque utilisateur. J'ai environ 300 utilisateurs pour cette application web. Donc, pour chaque utilisateur, ces tables seront créées et détruites.Quelle est la méthode alternative pour stocker les données temporaires dans une table temporaire?

J'ai entendu que cette façon de concevoir n'est pas bonne en raison de problèmes de performance. J'utilise MS SQL Server 2005. Y at-il un moyen de stocker temporairement un ensemble de résultats sans créer de table?

S'il vous plaît me suggérer une solution. Merci.

+0

Il semble que vous vouliez dire que vous créez une table permanente à des fins temporaires plutôt qu'une table temporaire réelle? –

+0

je crée la table comme ; avec la personne comme { sélection * de emloyee } Ceci est n'existera que pour cette session seulement? – Manoj

+0

'avec une personne comme {select * from emloyee}' est appelée Common Table Expression (CTE), et n'est pas vraiment une "table" ou une "table temporaire" et elle n'a que la portée de la commande en cours. –

Répondre

0

I pense, une solution à GenerateData est ce que vous cherchez. Vous pouvez créer des bases de données de test/exemple et les supprimer si nécessaire.

0

Selon ce que vous faites réellement (et si vous pouvez le refactoriser) il peut être plus approprié d'utiliser table variables qui sont très performants en général. Il y a une question de savoir si la base de données est vraiment un endroit approprié pour essayer même de conserver des ensembles de données si cela est avantageux pour vos applications - si la question n'est pas seulement académique, il vaut mieux garder la représentation de l'objet des données dans la mémoire de votre application?

+0

Les tables temporaires sont souvent plus performantes que les variables de table si l'ensemble de données est volumineux. – HLGEM

+0

comment cela pourrait-il persister sur plusieurs appels de pages? –

+1

@KM - Ce ne serait pas, mais je n'ai pas vu une exigence là-haut qu'il fallait. Franchement, si vous conservez des ensembles de données persistants pour des raisons commerciales, je le fais généralement dans la logique métier, pas dans le référentiel. – annakata

2

Soit:

utiliser une seule table de base de données permanente pour tous les utilisateurs, avec une colonne UserID pour filtrer sur

ou

il suffit d'utiliser la session capacité de manipulation de votre plate-forme Web pour stocker les informations

+0

SOunds aiment avec plus d'informations que la seconde est probablement ce qu'il veut vraiment. Envoyer un jeu de données à la plate-forme Web et maintenir les données à travers la session. – HLGEM

+0

Mais j'utilise le jeu de résultats à l'intérieur du déclencheur. À l'intérieur du déclencheur, j'utilise le jeu de résultats temporaire pour un traitement ultérieur. – Manoj

+0

@Manoj a dit 'Mais j'utilise le jeu de résultats à l'intérieur du déclencheur', pourquoi oh pourquoi n'avez-vous pas mentionné une fois' trigger' dans la question? vous avez seulement obscurci la vraie question en incluant 'web app' et' session' dans la question. Je n'ai aucune idée de ce que votre question demande, s'il vous plaît modifier votre question pour rendre plus clair ce qui se passe ici! –

1

Il semble que vous créez et supprimez des tables permanentes. Avez-vous essayé d'utiliser des tables temporaires réelles (celles avec des noms de tables commençant par #). OU variables de table si vous avez un petit ensemble de données. L'un ou l'autre peut très bien fonctionner. Si vous utilisez des tables temporaires réelles, vous devez vous assurer que votre tempdb est suffisamment grande pour accommoder le nombre habituel d'utilisateurs, la croissance de tempdb peut entraîner des retards.

+0

Vous devrez également vous assurer que la connexion à la base de données est maintenue, sinon la table temporaire ira ka-puts. Pour le rendre un peu plus indulgent, pourrait vouloir vérifier les tableaux temporaires globaux. –

Questions connexes