bstract-Very large database applications are usually modelled using huge schemas with several large tables with many columns. Queries defined on those schemas are complex since they contain join and aggregation operations. In large databases, join operations are the most used and the most expensive, especially when the size of tables is very large. To optimize these complex queries, several optimization structures have been proposed. Selecting any optimization structure is NP-hard problems since their search spaces are very large. In this paper, we classify these structures into two main categories: (1) non redundant structures (horizontal and vertical partitioning, parallel processing) and (2) redundant structures (materialized views, indexing schemes). Our study focuses on two non redundant structures: horizontal and vertical partitioning and one redundant structure: bitmap join indexes, where formalizations of their selection problems and algorithms are presented. We propose an approach combining horizontal partitioning and bitmap join indexes to speed up queries and to reduce storage and maintenance costs of indexes. Finally, our proposed algorithms are validated using experimental studies.