Az SQL nyelvű tipp ( angol hint ) egy olyan eszköz, amely lehetővé teszi a lekérdezési terv kifejezett befolyásolását .
Maga az SQL-lekérdezés jelzi, hogy milyen információkat kell beszerezni az adatbázisból, de nem tartalmaz utasításokat ennek végrehajtására. Általános esetben a relációs DBMS -ek saját szabályaik szerint határozzák meg a lekérdezési tervet , és ennek megfelelően hajtják végre azt. A gyakorlatban azonban előfordulhat, hogy egy ilyen lekérdezési terv a DBMS által figyelembe nem vett tényezők, logikai tökéletlenségek vagy speciális követelmények miatt szuboptimálisnak bizonyulhat. A tipp lehetővé teszi, hogy kifejezetten beavatkozzon a lekérdezési terv kialakításába anélkül, hogy teljes mértékben az automatizálásra hagyatkozna.
A szintaxist és a tippkészletet az SQL szabvány nem írja le , ez nagymértékben függ a DBMS konkrét megvalósításától.
A következő tipp-hozzárendeléseket különböztetjük meg:
Egyes esetekben a DBMS figyelmen kívül hagyhatja a tippet.
A Microsoft SQL Server hozzáadott néhány kulcsszót , amelyek utalhatnak az optimalizálóra, például egy lekérdezésben:
KIVÁLASZTÁS * C WITH ügyfelektől ( INDEX = város ) _ INNER LOOP JOIN Megrendelések O ON O . Ügyfélazonosító = C . Ügyfél-azonosító HOL C. _ város = 'Madrid'két tipp van:
Az Oracle Database szolgáltatásban a tippek megjegyzésként kerülnek beszúrásra a lekérdezés szövegébe. A megjegyzés szövegét elemzi, és ha úgy találja, hogy megegyezik a prompt nyelv szintaxisával, akkor elfogadja. Ennek a szintaxisnak köszönhetően a tippeket tartalmazó lekérdezés módosítás nélkül végrehajtható egy másik DBMS-en, és a tippben lévő elírás miatt a kiszolgáló egyszerű megjegyzésként kezeli a tippet [1] . Például egy kérésben:
SELECT /*+ full(t) */ t . név FROM tbl1 t WHERE t . dátum = SYSDATE SELECT /*+ index(t ind_date) */ t . név FROM tbl1 t WHERE t . dátum = SYSDATEa következő tippeket használta:
A MySQL -ben a 3.23.12-es verziótól kezdve megadhatja, hogy a MySQL mely indexeket (kulcsokat) használja az információk lekéréséhez egy táblából [2] :
táblanév [[ AS ] alias ] [[ USE INDEX ( key_list )] | [ INDEX ELHAGYÁSA ( key_list )] | FORCE INDEX ( key_list )]]