2012-08-22 5 views
-1

Je cherchais quelques conseils généraux et astuces pour la requête Opitimization dans SQL Server 2008.Optimisation des requêtes Conseils

Je suis tombé sur le dessous de laquelle je suis tout à fait incertain quelles sont les conséquences de l'utilisation des vues/triggies

  • Essayez de remplacer des vues avec table source originale
  • triggers ne doit pas être utilisé si possible, intégrer la logique de déclenchement dans la procédure stockée

Quelqu'un peut-il faire la lumière sur ces avantages et les inconvénients expliquant et également me diriger vers la liste des trucs et astuces générales pour l'optimisation des requêtes.

+0

Ma question est pas raisonnable? ou le gars qui a voté est tellement génie qu'il ne comprend pas ce que je demande? Atleast faire un commentaire lors du vote; afin que d'autres gars puissent comprendre ce que vous êtes jusqu'à ou il ya quelque chose de mal dans la question – Sreedhar

+2

Peut-être qu'ils ont estimé que votre question était inappropriée en fonction de la [FAQ StackOverflow] (http://stackoverflow.com/faq#questions). Ce n'est pas une question spécifique, mais une invitation à une discussion ouverte. En tout cas, je n'ai pas voté de toute façon. – HABO

Répondre

0

Une vue est une table virtuelle formée à partir d'une requête telle que 'SELECT a, b FROM tableC' Ceci crée une 'table virtuelle' d'un & b. Une table source est la table elle-même, et il est beaucoup plus efficace de pouvoir 'SELECT * FROM tableC' afin qu'une table virtuelle ne soit pas créée. Les déclencheurs sont des événements qui sont déclenchés lorsqu'un événement spécifié se produit, par exemple une requête spécifique. Les procédures stockées sont des transactions compilées et peuvent fonctionner exactement comme un déclencheur, sauf qu'elles sont beaucoup plus efficaces. En bref, n'utilisez pas de déclencheurs.

Je songerais sérieusement cette http://www.amazon.com/SQL-Tuning-Dan-Tow/dp/0596005733/ref=sr_1_1?ie=UTF8&qid=1345679033&sr=8-1&keywords=sql+optimization

+0

Pour les tables virtuelles, répondez. La conception de la base de données doit être telle que les requêtes requièrent généralement toutes les informations renvoyées à partir des colonnes source données sur chaque ligne renvoyée. Donc, si vous avez une requête où vous ne sélectionnez que certaines colonnes d'une table, votre schéma n'est pas efficace. – David

+0

Je ne suis pas d'accord qu'une vue est une "table virtuelle". Mais @David je ne suis pas sûr de suivre votre logique. Donc, si j'ai une table OrderDetails et que j'utilise une requête pour obtenir le nombre total d'unités de produit x qui seront nécessaires pour les commandes qui n'ont pas encore été expédiées, mon schéma est incorrect parce que ma requête ne regarde pas la colonne prix unitaire ce qui n'est pas pertinent à la requête que je cours actuellement? –

+0

Vous utiliseriez une requête telle que 'SELECT COUNT (unité) FROM OrderDetails', et puisque count ne retourne pas une "liste de lignes" en utilisant seulement la colonne 'unit', aucune table virtuelle n'est créée, donc non, votre schéma est pas d'ordures dans ce cas. Si vous exécutez 'SELECT unit FROM OrderDetails' et que vous comptez ensuite avec une autre fonction, vous créez une table virtuelle et ce n'est pas efficace. – David