It is not correct to say that 'the range-scan / order on must go last'.  If 
the requested range-scan/sort-order is on the same property as the primary 
sort then there is no work for appengine to do.  The results simply fall out 
in the required order.

A dilettante such as myself expects a performance-optimised system to 
suggest indexes sorted in such a way that they can take advantage of this, 
but appengine did not do so.  It suggested the same index regardless of what 
sort order my query requested.  This suggests to me that appengine is either 
very highly performance-optimised in this area, or is not 
performance-optimised at all.
>From reading the BigTable paper (bigtable-osdi06.pdf) I see that BigTable 
files are found by traversing a B+ tree with a maximum of 3 levels.  If a 
web search query is handled by taking the intersection of n single-property 
index scans all of which go through these B+ trees, then that's good 
performance optimisation.  I assume that this is how google does web search.
But composite indexes force you to work linearly.  You can't parallelise.  
My guess is that an un-optimised composite index is significantly inferior 
to parallel single-property index scans.

So I can refine my question a little: how does appengine traverse its *
composite* indexes when performing a query ?

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to