mysqllogicor-condition

Mysql - order of the "OR" operator


In a large query, I have

INNER JOIN file
ON ( file.file_id = temp_student_table.converted_file 
     OR file.file_id = temp_student_table.uploaded_file)

If file.file_id = temp_student_table.converted_file is a match, does MySQL check for the second statement? what happens if both of them return a match? Does it only consider the first statement?


Solution

  • In an OR condition, it will just evaluate the first condition and exit if it is already true.

    OR operator has this behaviour:

    A | B | A OR B
    0   0     0
    0   1     1            0 = False
    1   0     1            1 = True
    1   1     1
    

    This means the A OR B is true unless A and B are false. For this, A OR B will evaluate the minimum necessary: if A is already true, there is no point in continuing to evaluate the condition.