Google+ Followers

zaterdag 20 februari 2016

SQL: Wat te doen met een trage OR query?

Een query die in de WHERE clausule een OR gebruiken in de vorm van WHERE foo=1 OR foo = 5 worden vaak traag omdat de database geen index kan gebruiken om aan de OR te voldoen.

De query is wel snel  als je alleen zoekt naar foo=1 of alleen zoekt naar foo=5. De oplossing is dan ook simpelweg: UNION.

Een UNION voegt de uitkomst van twee queries samen en twee snelle queries samenvoegen gaat sneller dan één trage query uitvoeren.

Dus iets als dit:

SELECT * FROM foo WHERE bar=1 or bar=5;

wordt iets als:

SELECT * FROM foo WHERE bar=1
UNION
SELECT * FROM foo WHERE bar=5