1. A method for optimizing pattern query searches on a graph database, the method being implemented by a computer including at least one processor and comprising: reading a first pattern query for a pattern search; identifying, using a pattern query optimizer executed by the at least one processor, a complex configuration in the first pattern query, the complex configuration including at least one branch or cycle; and generating, using the pattern query optimizer, two or more subpattern queries by decomposing each branch and cycle of the complex configuration into equivalent straight line nodes joined by edges to be converted to search expressions.