Αναγν. άρθρου: 305977 - Τελευταία αναθεώρηση: Πέμπτη, 27 Ιανουαρίου 2011 - Αναθεώρηση: 2.0

INF: Συνήθεις ερωτήσεις - SQL Server 2000 - πίνακα μεταβλητών

Συμβουλή συστήματοςΑυτό το άρθρο ισχύει για διαφορετικό λειτουργικό σύστημα από αυτό που χρησιμοποιείτε. Το περιεχόμενο του άρθρου που ενδέχεται να μην σας αφορά έχει απενεργοποιηθεί.
Ανάπτυξη όλων | Σύμπτυξη όλων

Περίληψη

Αυτό το άρθρο απαντά σε ορισμένες από τις συνήθεις ερωτήσεις (FAQ) σχετικά με τις μεταβλητές του πίνακα που εισάγονται στον SQL Server 2000.

Για να διαβάσετε τα ηλεκτρονικά βιβλία SQL Server Books Online περιγραφή του πίνακα μεταβλητές, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web:
.aspx http://msdn2.Microsoft.com/en-us/library/aa260638 (SQL.80) (http://msdn2.microsoft.com/en-us/library/aa260638(SQL.80).aspx)

Περισσότερες πληροφορίες

Ε1: Γιατί πίνακα μεταβλητών θεσπίστηκαν όταν υπήρχαν διαθέσιμες προσωρινούς πίνακες;

A1:Πίνακας μεταβλητές έχουν τα ακόλουθα πλεονεκτήματα έναντι προσωρινά πίνακες:
  • Όπως αναφέρθηκε με το SQL Server Books Online "Πίνακες" το άρθρο πίνακα μεταβλητών, όπως τοπικές μεταβλητές, έχουν σαφώς ορισμένη εύρος στο στο τέλος της οποίας αυτόματα απαλείφονται τους.
  • Μεταβλητές πίνακα έχει ως αποτέλεσμα λιγότερα εναναμεταγλωττίσεων από μια αποθηκευμένη η διαδικασία σε σχέση με τους προσωρινούς πίνακες.
  • Συναλλαγές που αφορούν σε πίνακα μεταβλητών τελευταία μόνο για το διάρκεια ενημέρωσης σχετικά με τη μεταβλητή πίνακα. Επομένως, χρειάζονται πίνακα μεταβλητών λιγότερο κλείδωμα και καταγραφή των πόρων. Επειδή η περιορισμένη εμβέλεια μεταβλητών πίνακα και δεν αποτελούν μέρος της βάσης δεδομένων μόνιμες, ζημιές συναλλαγή δεν επηρεάζει τους.
Q2: Τι σημαίνει λέγοντας ότι μεταβλητών πίνακα έχει ως αποτέλεσμα λιγότερα εναναμεταγλωττίσεων μιας αποθηκευμένης διαδικασίας από όταν χρησιμοποιούνται προσωρινούς πίνακες;

A2:Το ακόλουθο άρθρο περιγράφει ορισμένα αίτια όταν αποθηκεύονται διαδικασίες μεταγλωττιστούν ξανά:

243586  (http://support.microsoft.com/kb/243586/ ) Αντιμετώπιση προβλημάτων αποθηκευμένη διαδικασία recompilation
Το εναναμεταγλωττίσεων"οφείλεται σε ορισμένες προσωρινό πίνακα Ενότητα λειτουργίες"παραθέτει επίσης ορισμένες απαιτήσεις για την αποφυγή όπως ένα recompilation λόγω των προσωρινών πινάκων. Αυτοί οι περιορισμοί δεν ισχύουν για πίνακα μεταβλητών.

Πίνακα μεταβλητών απομονώνονται πλήρως σε δέσμη που δημιουργεί τους δεν είναι λύση» πρέπει να προκύψει όταν μια πρόταση CREATE ή ALTER πρόταση λαμβάνει χώρα, που ενδέχεται να προκύψουν με έναν προσωρινό πίνακα. Προσωρινούς πίνακες χρειάζεστε αυτήν την ανάλυση ", ώστε να μπορούν να αναφέρονται στον πίνακα από μια ένθετη αποθηκευμένα διαδικασία. Πίνακα μεταβλητών αποφύγετε τελείως, ώστε να χρησιμοποιήσετε αποθηκευμένες διαδικασίες σχέδιο που ήδη έχει μεταγλωττιστεί, και εξοικονομώντας με πόρους για την επεξεργασία της αποθηκευμένης διαδικασία.

Τ3: Ποια είναι ορισμένα από τα μειονεκτήματα των μεταβλητών πίνακα;

A3:Αυτά είναι μερικά από τα μειονεκτήματα σε σύγκριση με προσωρινούς πίνακες:
  • Δεν μπορούν να δημιουργηθούν μη συγκεντρωτικά ευρετήρια στον πίνακα μεταβλητών, εκτός από τα ευρετήρια συστήματος που δημιουργούνται για ένα ΠΡΩΤΕΎΟΝ ή UNIQUE περιορισμός. Που μπορούν να επηρεάσουν τις επιδόσεις ερωτημάτων σε σύγκριση με ένα προσωρινό πίνακα με μη συγκεντρωτικά.
  • Πίνακα μεταβλητών διατηρεί στατιστικά στοιχεία, όπως προσωρινή να πίνακες. Στατιστικά στοιχεία δεν μπορούν να δημιουργηθούν στον πίνακα μεταβλητών μέσω Αυτόματου Δημιουργία ή χρησιμοποιώντας την εντολή ΔΗΜΙΟΥΡΓΊΑ ΣΤΑΤΙΣΤΙΚΏΝ. Επομένως, για μιγαδικός ερωτήματα σε μεγάλους πίνακες, η έλλειψη στατιστικών στοιχείων ενδέχεται να αποθαρρύνουν τη βελτιστοποίηση για Προσδιορίστε το καλύτερο σχέδιο ενός ερωτήματος, έτσι που επηρεάζουν τις επιδόσεις του που το ερώτημα.
  • Δεν μπορείτε να αλλάξετε τον ορισμό του πίνακα μετά την αρχική ΔΗΛΏΣΤΕ τη δήλωση.
  • Μεταβλητές πίνακες δεν μπορούν να χρησιμοποιηθούν σε ένα EXEC εισαγωγή ή ΕΠΙΛΟΓΉ ΣΤΗ δήλωση.
  • ΕΛΈΓΞΤΕ τους περιορισμούς, ΠΡΟΕΠΙΛΕΓΜΈΝΕΣ τιμές και υπολογιζόμενες στήλες σε η δήλωση τύπου πίνακα δεν είναι δυνατό να καλέσετε συναρτήσεις οριζόμενες από το χρήστη.
  • Δεν μπορείτε να χρησιμοποιήσετε την πρόταση EXEC ή τοsp_executesqlαποθηκευμένη διαδικασία για την εκτέλεση ενός δυναμικού ερωτήματος SQL Server που αναφέρεται σε μεταβλητή πίνακα, εάν η μεταβλητή πίνακας έχει δημιουργηθεί εκτός της δήλωσης EXEC ή τοsp_executesqlαποθηκευμένη διαδικασία. Επειδή οι μεταβλητές πίνακα μπορούν να αναφέρονται σε τους τοπικής εμβέλειας, μια πρόταση EXEC και έναsp_executesqlαποθηκευμένη διαδικασία θα ήταν εκτός του πεδίου του πίνακα μεταβλητή. Ωστόσο, μπορείτε να δημιουργήσετε τη μεταβλητή πίνακα και να εκτελέσει οποιαδήποτε επεξεργασία στο εσωτερικό της δήλωσης EXEC ή τοsp_executesqlαποθηκευμένη διαδικασία, επειδή είναι η τοπική εμβέλεια μεταβλητών πίνακα στην πρόταση EXEC ή τοsp_executesqlαποθηκευμένη διαδικασία.
Q4: Είναι μεταβλητές πίνακα μνήμης μόνο δομές που διασφαλίζονται καλύτερες επιδόσεις σε σύγκριση με τους πίνακες προσωρινή ή μόνιμη, επειδή αυτές διατηρούνται σε μια βάση δεδομένων που βρίσκεται στο φυσικό δίσκο;

A4:Μια μεταβλητή πίνακα δεν είναι μια δομή μόνο μνήμη. Επειδή ένας πίνακας μεταβλητή μπορεί να κρατήστε περισσότερα δεδομένα από όσα χωρούν στη μνήμη, να διαθέτει χώρο δίσκο για την αποθήκευση δεδομένων. Μεταβλητές πίνακα δημιουργούνται με τοtempdbπαρόμοια με προσωρινούς πίνακες βάσης δεδομένων. Εάν η μνήμη είναι διαθέσιμη, και τα δύο πινάκων με μεταβλητές και προσωρινούς πίνακες δημιουργούνται και επεξεργασία κατά τη διάρκεια της μνήμη (cache δεδομένων).

Ε5: Πρέπει να χρησιμοποιήσετε μεταβλητές πίνακα αντί για προσωρινούς πίνακες;

A5:Η απάντηση εξαρτάται από τους τρεις αυτούς παράγοντες:
  • Ο αριθμός των γραμμών που έχουν εισαχθεί για το στον πίνακα.
  • Ο αριθμός των εναναμεταγλωττίσεων το ερώτημα αποθηκεύεται από.
  • Τον τύπο των ερωτημάτων και τους εξάρτηση από ευρετήρια και Στατιστικά στοιχεία για τις επιδόσεις.
Σε ορισμένες περιπτώσεις, η διάσπαση μιας αποθηκευμένης διαδικασίας με προσωρινά πίνακες σε μικρότερες αποθηκευμένες διαδικασίες, ώστε το recompilation λαμβάνει χώρα μικρότερες μονάδες είναι χρήσιμες.

Γενικά, μπορείτε να χρησιμοποιήσετε μεταβλητές πίνακα όποτε είναι δυνατόν, εκτός εάν βρίσκονται σε σημαντικό όγκο δεδομένων δεν υπάρχει και εκεί είναι επαναλαμβανόμενη χρήση του πίνακα. Στην περίπτωση αυτή, μπορείτε να δημιουργήσετε ευρετήρια για τα προσωρινό πίνακα για να αυξήσετε την απόδοση του ερωτήματος. Ωστόσο, μπορεί να είναι κάθε σενάριο διαφορετικά. Η Microsoft συνιστά να ελέγξετε εάν οι περισσότερες μεταβλητές πίνακα χρήσιμες από προσωρινούς πίνακες για ένα συγκεκριμένο ερώτημα ή αποθηκευμένη διαδικασία.

Είδε μια απάντηση στην ερώτησή σας; Επισκεφθείτε το Microsoft SQL Server ομάδες συζήτησης σε:Microsoft Ομάδες συζήτησης του SQL Server (http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.sqlserver.server)

Σχόλια σχετικά με αυτό ή άλλο Τα άρθρα του Microsoft SQL Server (Knowledge Base); Απόθεση μας μια σημείωση στοSQLKB@Microsoft.com (mailto:sqlkb@microsoft.com)

Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft SQL Server 2000 Standard Edition
Λέξεις-κλειδιά: 
kbinfo kbmt KB305977 KbMtel
Μηχανικά μεταφρασμένοΜηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:305977  (http://support.microsoft.com/kb/305977/en-us/ )