最近,对jackrabbit中Xpath和JCR-SQL2的查询性能做了一下比较,虽然JCR从2.0版本开始不再推荐使用XPath,但从查询性能上来讲,XPath似乎远高于JCR-SQL2
以下是查询比较结果
测试环境:
Jackrabbit 2.2.7
操作系统 Windows 2003
内存 4G
处理器 AMD Athlon(tm) II X4 640 3.01GHz
数据源:
1033条节点记录,包括917个文件和116个文件夹
查询比较:
测试记录 | JCR-SQL2(毫秒) | Xpath(毫秒) |
1 | 2328 | 187 |
2 | 2484 | 188 |
3 | 2500 | 188 |
4 | 2344 | 187 |
5 | 2328 | 203 |
6 | 2344 | 187 |
7 | 2484 | 203 |
8 | 2344 | 188 |
9 | 2343 | 203 |
10 | 2343 | 188 |
平均 | 2384 | 192 |
查询语句:
JCR-SQL2:
SELECT node.* FROM[krp:KNode] AS node
INNER JOIN [krp:KRPACL] asacl ON ISCHILDNODE(acl,node)
INNER JOIN [krp:KFolder] asparent ON ISCHILDNODE(node,parent)
WHERECONTAINS(acl.[krp:browse],'1')
AND ISSAMENODE(parent,'/KRP/KRepoGroup[2]/KRepository/KFolder')
ORDER BY node.[krp:folder] DESC
Xpath:
//KRP/KRepoGroup[2]/KRepository/KFolder/element(*,krp:KFolder)[KFolderACL/@krp:browse='1']