A computer implemented method to optimize data searching in an in-memory database stored as a column store, comprising: executing, by a processor of a computer, a reordering optimization model to reorder one or more attribute vectors from a plurality of attribute vectors (1002; 1004; 1006), the plurality of attribute vectors (1002; 1004; 1006) including value identifiers that represent the values of columns of a table of structured data, wherein the plurality of attribute vectors (1002; 1004; 1006) are columns of a new table stored in the in-memory database, wherein each of the plurality of attribute vectors (1002; 1004; 1006) is associated with a corresponding dictionary structure, the dictionary structure including the value identifiers associated with the values in the columns of the table of structured data; said execution of the reordering optimization model, comprising: assigning the one or more attribute vectors a priority; based on the assigned priority, computing a sequence score corresponding to each of the one or more attribute vectors (1002; 1004; 1006); based on the sequence score, reordering the one or more attribute vectors (1002; 1004; 1006); and wherein the priority to the one or more attribute vectors is assigned based on a frequency of data access, an amount of memory consumed by the one or more attribute vectors, and a combination thereof; executing, by the processor of the computer, a partitioning optimization model to logically partition the reordered one or more attribute vectors, wherein the logical partitioning corresponds to division of the attribute vector into distinct independent parts, and wherein the execution of the partitioning optimization model determines an optimal number of logical partitions to be created on each of the plurality of attribute vectors depending on the priority and a memory constraint associated with the attribute vector; based on the determined optimal number of partitions, generating attribute vector blocks (1002A - 1006H). executing, by a processor of a computer, a reordering optimization model to reorder one or more attribute vectors from a plurality of attribute vectors (1002; 1004; 1006), the plurality of attribute vectors (1002; 1004; 1006) including value identifiers that represent the values of columns of a table of structured data, wherein the plurality of attribute vectors (1002; 1004; 1006) are columns of a new table stored in the in-memory database, wherein each of the plurality of attribute vectors (1002; 1004; 1006) is associated with a corresponding dictionary structure, the dictionary structure including the value identifiers associated with the values in the columns of the table of structured data; said execution of the reordering optimization model, comprising: assigning the one or more attribute vectors a priority; based on the assigned priority, computing a sequence score corresponding to each of the one or more attribute vectors (1002; 1004; 1006); based on the sequence score, reordering the one or more attribute vectors (1002; 1004; 1006); and wherein the priority to the one or more attribute vectors is assigned based on a frequency of data access, an amount of memory consumed by the one or more attribute vectors, and a combination thereof; assigning the one or more attribute vectors a priority; based on the assigned priority, computing a sequence score corresponding to each of the one or more attribute vectors (1002; 1004; 1006); based on the sequence score, reordering the one or more attribute vectors (1002; 1004; 1006); and wherein the priority to the one or more attribute vectors is assigned based on a frequency of data access, an amount of memory consumed by the one or more attribute vectors, and a combination thereof; executing, by the processor of the computer, a partitioning optimization model to logically partition the reordered one or more attribute vectors, wherein the logical partitioning corresponds to division of the attribute vector into distinct independent parts, and wherein the execution of the partitioning optimization model determines an optimal number of logical partitions to be created on each of the plurality of attribute vectors depending on the priority and a memory constraint associated with the attribute vector; based on the determined optimal number of partitions, generating attribute vector blocks (1002A - 1006H).