A method and system for efficient snapshot querying include: providing a
first version value for each data in a history table, where the first
version value indicates a beginning of a period in which the data is
valid; providing at least a second version value for each data in the
history table, where the second version value indicates an end of the
period in which the data is valid; receiving a request for a version of a
database; and retrieving the data with the first version value less than
or equal to the requested version and the second version value greater
than or equal to the requested version. By maintaining a history table
with redundant version information, the method and system are able to
provide efficient snapshot querying while also avoiding the overhead
burden of conventional approaches. No aggregates, joins, or sub-queries
are required to retrieve a snapshot.