最近,对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']