1. A method comprising: receiving a request for an online transactional processing (OLTP) transaction through an input device to access data in a column-based storage of a database contained in a data storage device, the OLTP transaction including a query to access a first set of columns in the column-based storage; in the event a cache includes column information for the OLTP transaction, entering a learned mode; responsive to entering the learned mode: determining a second set of columns that are needed by the OLTP transaction, the determining including comparing the OLTP transaction to a plurality of previously processed OLTP transactions stored in the cache; optimizing the query of the OLTP transaction to access the second set of columns in the cache, wherein the second set of columns is smaller than the first set of columns; and processing the OLTP transaction with the column information in the cache based on the optimized query; in the event the cache does not include the column information for the OLTP transaction, entering a learning mode and selecting columns from the column-based storage of the database, caching column names or indices relating to the selected columns, and entering the learned mode and processing the OLTP transaction with the column information in the cache, wherein the selection of columns is based on the OLTP transaction and includes only columns necessary for the OLTP transaction; and outputting at least a portion of a result of the OLTP transaction to an output device.