Join clauses take this form:
table1.column_name <operator> table2.column_name
The join operators are:
=, >, >=, <, <=, !>, !<, !=, <>, *=, =*
table1 [ left | right ] join table2 on column_name = column_name
table1 inner join table2 on column_name = column_name
When joins are optimized, the optimizer can only consider indexes on column names. Any type of operator or expression in combination with the column name means that the optimizer does not evaluate using an index on the column as a possible access method. If the columns in the join are of incompatible datatypes, the optimizer can consider an index on only one of the columns.