我有一个JCR查询,如:
SELECT * FROM [my:nodetype] WHERE ISDESCENDANTNODE([/somepath]) OR (otherPath LIKE '/someotherpath')
它在6秒内执行。
otherPath
属性是一个多值字符串属性(只有两个对象设置它)。
整个数据库中只有7个类型my:nodetype
的节点
虽然两个单独的查询:
SELECT * FROM [my:nodetype] WHERE ISDESCENDANTNODE([/somepath])
并且
SELECT * FROM [my:nodetype] WHERE otherPath LIKE '/someotherpath'
执行时间小于1毫秒。有没有理由为什么第一个查询运行得如此之慢?也许有可能像在SQL数据库中一样在Jackrabbit中查看查询计划?我该如何调试问题?
我无法想象为什么总共搜索7个节点,无论搜索条件是否会产生7秒的查询运行时间......
答案 0 :(得分:0)
这是Jackrabbit中的一个已知错误。我不确定,但我认为在最新版本的Jackrabbit中仍未纠正。
这与此无关,你必须使用两个查询。