Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια

Query για Indexes σε Foreign Keys

Σε πολλές (αν όχι σε όλες) τις περιπτώσεις είναι απαραίτητο να έχουμε secondary indexes σε columns που κάνουν reference σε ξένα κλειδιά. Αν για παράδειγμα έχουμε δύο πίνακες (Employees και Departments) και ο πίνακας Employees έχει ένα Foreign Key constraint στο DepartmentID (δηλαδή η κάθε εγγραφή του πίνακα Employees έχει ένα reference στο ID του department που ανήκει), τότε κατά πάσα πιθανότητα θα υπάρχουν queries στα οποία οι δύο αυτοί πίνακες κάνουν JOIN (πιθανότατα INNER JOIN) στο πεδίο αυτό.

Θα ήταν λοιπόν καλό (για να μην πώ απαραίτητο) να έχουμε μια λίστα με τα ξένα κλειδιά που ΔΕΝ ΕΙΝΑΙ INDEXED

Τρέξτε αυτό το query (μόνο σε SQL 2005) και θα πάρετε αυτή τη λίστα...


-- Check that ALL FK columns are indeed indexed in the child table

select ' FK without Index : Create Secondary index on table  ' + o.name + ' for column ' + c.name as IndexesNeeded,
  fc.referenced_object_id, fc.referenced_column_id, f.name, f.type, f.type_desc, f.parent_object_id, fc.parent_column_id
from sys.foreign_keys as f, sys.foreign_key_columns as fc, sys.objects as o, sys.columns as c
where c.object_id = o.object_id and c.column_id = fc.parent_column_id and o.object_id = fc.parent_object_id and
  fc.constraint_object_id = f.object_id and fc.parent_object_id = f.parent_object_id
and
(
 Select count(*) --Parent_object_id, Parent_column_id 
 from sys.foreign_key_columns  fkc,
  sys.index_columns ic
 where fc.parent_object_id = fkc.Parent_object_id and
  fkc.Parent_object_id = ic.object_id and
  fkc.Parent_column_id = ic.column_id and
  fkc.Parent_column_id = fc.parent_column_id ) = 0
Order by o.Name

Έχουν δημοσιευτεί Τετάρτη, 23 Μαΐου 2007 5:34 μμ από το μέλος Nick Makris
Δημοσίευση στην κατηγορία:

Ενημέρωση για Σχόλια

Αν θα θέλατε να λαμβάνετε ένα e-mail όταν γίνονται ανανεώσεις στο περιεχόμενο αυτής της δημοσίευσης, παρακαλούμε γίνετε συνδρομητής εδώ

Παραμείνετε ενήμεροι στα τελευταία σχόλια με την χρήση του αγαπημένου σας RSS Aggregator και συνδρομή στη Τροφοδοσία RSS με σχόλια

Σχόλια:

Χωρίς Σχόλια

Ποιά είναι η άποψή σας για την παραπάνω δημοσίευση;

(απαιτούμενο)
απαιτούμενο
(απαιτούμενο)
ÅéóÜãåôå ôïí êùäéêü:
CAPTCHA Image