2010-11-22 8 views
0

Je suis débutant dans SQL Server 2005 et je suis l'apprentissage à partir de tutoriel en ligne, voici quelques-unes de ma question:Sql Server 2005 requête novice

1: Quelle est la différence entre Select * de XYZ et sélectionnez TOUS * de XYZ. 2: Le but de l'index clusterisé est de faciliter la recherche en triant physiquement la table [pour autant que je sache :-)]. Disons si la colonne primaire est sur une table que ce qui est bon pour créer un index clusterisé sur la table? parce que nous avons déjà une colonne qui est triée. 3: Pourquoi nous pouvons créer 1 Index clusterisé + 249 Index non clusterisé = 250 Index sur une table? Je comprends l'exigence de 1 index clusterisé. Mais pourquoi 249 ?? Pourquoi pas plus de 249?

Répondre

0
  1. Aucune différence SELECT ALL est la valeur par défaut, par opposition à SELECT DISTINCT

  2. Opinion varie. Pour des raisons de performances, les index clusterisés doivent idéalement être petits, stables, uniques et augmenter de façon monotone. Les clés primaires doivent également être stables et uniques, donc il y a un ajustement évident. Cependant, les index clusterisés sont bien adaptés aux requêtes de plage. La recherche d'enregistrements individuels par PK peut bien fonctionner si le PK est non clusterisé, de sorte que certains auteurs suggèrent de ne pas "gaspiller" l'index clusterisé sur le PK.

  3. Dans SQL Server 2008, vous pouvez créer jusqu'à 999 NCI sur une table. Je ne peux pas imaginer le faire mais je pense que la limite a été soulevée comme potentiellement avec des «index filtrés» il pourrait y avoir un cas viable pour ce nombre. Les index ajoutent un coût aux opérations de modification de données car les changements doivent être propagés à plusieurs endroits, donc j'imagine que ce ne sont que des bases de données en lecture seule (par exemple) qui atteignent jamais deux chiffres.

+0

Merci pour votre suggestion, je suis clair avec les points 1 et 2. Mais je suis un peu confus avec le point 3, Pourquoi nous avons 999 index non cluster dans la table pourquoi pas 900 ou 1000? – Zerotoinfinity

+0

@Zerotoinfinite - Les seules personnes qui peuvent répondre sont les développeurs SQL Server! Je suppose en interne qu'ils allouent seulement une quantité finie d'espace pour stocker ces métadonnées et 999 sonnait comme une limite raisonnable. –

0

Pour 3:

Everytime lorsque vous insérez/Supprimer l'enregistrement dans le tableau tous les index doivent être mis à jour. Si vous avez trop d'index, cela prend trop de temps.

Si votre table a plus de 5-6 index je pense que vous avez besoin de prendre le temps et de vérifier vous-même.

+0

Merci pour votre contribution. Mais je suis confus entre le nombre. Pourquoi seulement 249? Pourquoi pas 248 ou 251? – Zerotoinfinity

+0

Je crois que tous les index doivent être mis à jour seulement si une table a un index clusterisé –