参考 http://www.ibm.com/developerworks/cn/xml/x-optxmldb/?S_TACT=105AGX52&S_CMP=tec-csdn 结合实践浅谈优化经验.
1.避免规格化
别用关系型数据库的设计准则设计你的XML数据库结构, 数据量大时XML join效率慢到可以到分秒的级别, 别怕数据 冗余, 每个文档尽量少关联数据到其他文档, 堆一起反而效率高, 让人很不习惯的改变.
2. 采用唯一的元素名称
节点唯一名可以保证过滤出更小的结果集.
3. 执行较少的索引查询
Xpath太长, 从根节点查多层子节点如果又没很好的过滤的话有时查询的数据量过大, 相对路径的xpath大多的时候更快(但不等同于返回的数据量).
4.预先计算值
如原文所说 原生 XML 数据库都是以牺牲存储空间并容忍冗余为代价来换取性能的.
5.通过查询转换数据
有时别像数据库一样返回List, Map, java bean之类的数据, 它可以直接返回到渲染最前端.
很多XML数据库应该都有profile和debug API和工具, 可以看到代码哪里慢了.
7. 针对索引写代码,扩展功能.
每个数据库实现都有自己专有的东西, 例如一些优化了的查询函数, wildcard查询, 日期等专有索引; 但索引的代价会导致load document慢而且数据库膨胀.
8. 更好的服务器, 大内存, 大/快硬盘, 64位操作系统, 多核CPU; 优化XML数据库配置更多的缓存等.