A lekérdezésfeldolgozó

A lekérdezésfeldolgozó feladata, hogy a lekérdezéseket, illetve egyéb adatbázis-műveleteket, amelyek gyakran egy magas szintű nyelven vannak megfogalmazva (mint pl. egy SQL lekérdezés esetén) egyszerű utasítások sorozatává alakítsa. Ezek az egyszerű utasítások a relációknak vagy az indexeknek bizonyos soraira vonatkozó kérések. Gyakran a lekérdezésfeldolgozás legnehezebb része a lekérdezések optimalizálása, vagyis egy megfelelő végrehajtási terv kiválasztása. A végrehajtási terv a tárolórendszernek szóló olyan kérések sorozata, amelyek választ adnak a lekérdezésre.

A bonyolult lekérdezések sokszor lehetővé teszik, hogy átrendezzük a műveleteket, és így nagyon sok lehetséges végrehajtási terv adódik. Ezek száma exponenciálisan nagy lehet a lekérdezés méretének függvényében. Néha két index közül is választhatunk, hogy melyiket használjuk, de mindkettőt egyszerre nem használhatjuk.