This document surveys techniques for efficiently executing queries over large databases. It describes algorithms for sorting, hashing, aggregation, joins and other operations. It also discusses parallel query execution, complex query plans, and techniques for non-traditional data models. The goal is to provide a foundation for designing query execution facilities in new database management systems.