Part 1 of my "Indexing XML" article went live at the MSDN XML Dev Center. In this article I discuss various aspects of indexing standalone XML documents - XML IDs, XSLT Keys and introduce IndexingXPathNavigator class, part of the Mvp.Xml library, which enables lazy or eager indexing of any IXPathNavigable XML store (XmlDocument, XPathDocument or XmlDataDocument) thus providing alternative fast way to select nodes directly from the index table and not searhing the XML tree. This allows drastically decrease selection time and improve scalability on preindexed selections.
Here is benchmark results on searching 1000 random orders by order ID from differently sized XML documents using XmlDocument, XPathDocument and IndexingXPathNavigator:
'nuf said.
Any comments are welcome! In the next part of the article I'm focusing on XML indexing aspects of the SQL Server 2005.
akheris, I'm really glad you like it.
WRT BbuildIndexes() I'm not sure actually. Probably in server scenario with lots of complex keys and huge XML document it would make sense to prebuild indexes, e.g. at app initialization time, so even first access will be fast.
Excellent article. I work for Webdata. Although I dont work with Navigators, the indexing navigator is cool. One question though, do we really need a public BuildIndexes method?
That looks terrific man. I am looking forward to read it.