Search code examples
mysqlsqlwhere-in

MYSQL query WHERE IN vs OR


I have developed a system using an OR query:

SELECT * FROM tableA 
JOIN tableB ON (idA = idB)
WHERE idA = 1 OR 
      idA = 2 OR 
      idA = 3 OR 
      idA = 4 OR 
      idA = 5 ...... OR 
      idA=100

Compare with query IN:

SELECT * 
FROM tableA JOIN tableB ON (idA = idB)
WHERE idA IN (1,2,3,4,5,......,100)

What is the best query in a MYSQL database?


Solution

  • Use IN.

    IN will use an index.

    OR will (afaik) not use an index.

    Also, and this point is not to be sneezed at, the IN version:

    • uses less code
    • is easier to maintain
    • is easier to understand

    For those reasons alone I would be prepared suffer a little performance to gain code quality, but you actually gain performance too.