  Traditionally, query optimizers have been designed for computer systems that
share a common architecture, consisting of a CPU, main memory and disk
subsystem. The efficiency of query optimizers and their successful employment
relied on the fact that these architectures basically stayed the same over the
last decades. However, recently the performance increase of serial instruction
execution has stagnated. As a consequence, computer architectures have started
to diversify. Combined with the fact that the size of main memories has
significantly increased it becomes more important to exploit intrinsic internal
features of computer systems (data coherence mechanisms, TLB and instruction
cache performance, among others) rather than mainly focusing on minimizing disk
I/O. Time has come for a re-evaluation of how (traditional) query optimization
is implemented. Query optimizers must be able to cope with disruptive advances
in computer architecture and employ methods to optimize for
architecture-specific features. In this paper, the query optimization process
is redefined so that compiler optimizations are taken into the game much
earlier than traditionally is done and employ compiler optimizations as the
driving force in query optimization. This new generation of query optimizers
will be capable of optimizing queries to perform significantly better than
contemporary state-of-the-art query optimizers.
