Τα XML πεδία αποθηκεύονται εσωτερικά ως BLOBs προκειμένου να είναι πιο eficient η αποθήκευσή τους όπως για παράδειγμα να συμπιέζονται σε ένα βαθμό. Από την άλλη μεριά όμως τα BLOBs έχουν ως side-effect ακριβώς το πρόβλημά σου, να είναι αργά τα XQueries όταν μεγαλώνει ο όγκος του πεδίου.
Για να βελτιωθεί η αναζήτηση στα XML πεδία, μπορείς να ορίσεις ένα primary XML index και τρία secondary. Το primary απλά "σπάει" την τιμή από κάθε XML πεδίο σε tags, attributes, paths, κλπ. Τα secondary XML indexes παίζουν πάνω σε πεδία που έχουν ήδη ορισμένο το primary και κάθε ένα από αυτά βοηθάει συγκεκριμένους τύπους από XQueries. Υπάρχει το PATH secondary XML index που βοηθά queries με XPath expressions. To VALUE secondary XML index που βοηθάει για queries που αναζητούν τιμές από nodes μέσα στο XML doc και τέλος το PROPERTY secondary XML index που βοηθά queries που αναζητούν object properties από το XML doc.
Βέβαια, there is no such thing as free lunch. Η συντήρηση αυτών των indexes κοστίζει και γι αυτό απαιτείται σύνεση. Ειδικότερα τα secondary τα δημιουργούμε μόνο όταν τρέχουμε τα ανάλογα queries για τα οποία προορίζονται, δηλαδή δεν είναι καλή πρακτική να τα δημιουργήσουμε εκ των προτέρων μην τύχει και τρέξουμε κάποιο ad-hoc query.
Στα Books On Line θα βρεις αρκετό υλικό για τα XML Indexes.
Vir prudens non contra ventum mingit