Lists Home |
Date Index |
> Static typing can help optimize low-level operations that are
> close to the machine (for instance this is why as a rule SML
> is more efficient than Scheme), but languages that do heroic
> optimizations -- APL, SQL, and Common Lisp for instance --
> tend to be dynamically typed. Static typing is neither
> necessary nor sufficient.
> What optimization strategies does the XQuery type system
> enable? Has anyone implemented, or even just designed, a
> database access optimizer that takes advantage of it?
The most important optimization in database languages is selection of
indexes. By definition this needs to be done statically: if you have to
look at the data in order to decide whether to use an index, the index
serves no purpose.
If the query is
employee[salary > 100000]
then to use an index on salary, at the very least you have to know that
the index was built using the same assumptions about the ">" operator as
the query is using. So some kind of static analysis is necessary. And
some of the characteristics of the XPath 1.0 dynamic typing rules (which
say, for example that "1.0" = "1" is false, but "1.0" <= "1" is true)
become a major embarassment.
I have argued in the past that the static analysis you need to do for
optimization isn't precisely the same as you do for static typing of
programming languages; but it certainly has a lot in common.
Tamino's optimizer certainly uses this kind of analysis. When you are
dealing with terabytes of data, there is no other option.