Selection in Sorted Files
For one queries on sort key, use binary search.
lo = 0; hi = b-1
while (lo <= hi) {
mid = (lo+hi) div 2;
(tup,loVal,hiVal) = searchBucket(f,mid,k,val);
if (tup != null) return tup;
else if (val < loVal) hi = mid - 1;
else if (val > hiVal) lo = mid + 1;
else return NOT_FOUND;
}
return NOT_FOUND;
|
where f is file for relation, mid,lo,hi are page indexes,
k is a field/attr, val,loVal,hiVal are values for k
|