Does the order of where clauses or columns in where clause affect the query speed?
Short answer: No.
Firebird's optimizer does analysis of each query before execution. It evaluates the expressions used and determines if index can be used for some of them. For example, if you have a clause 'WHERE ID = 2' it will look for index involving column ID. Order of expressions in the where clause and order of tables does not matter to the optimizer, writing:
JOIN ... ON a.ID = b.ID
is the same as:
JOIN ... ON b.ID = a.ID
After finding all indexes, the Firebird optimizer will look for their statistics (selectivity, see FAQ #167) to determine which ones to use. If there are no indexes, Firebird decides which tables to evaluate first depending on the size of tables. The only thing that can change optimizers behavior is adding dummy expressions to turn off some index (see FAQ #158) and changing the type of JOIN (INNER, LEFT OUTER, RIGHT OUTER).