Tipp (SQL)

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.

Megvalósítási jellemzők

Microsoft SQL Server

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:

Oracle Database

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 = SYSDATE

a következő tippeket használta:

  • /*+ full(t) */ - azt jelzi, hogy a keresést a teljes táblázat átvizsgálásával kell végrehajtani
  • /*+ index(t ind_date) */ - azt jelzi, hogy a keresést egy adott indexen kell végrehajtani

MySQL

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 )]]

Jegyzetek

  1. Tippek az Oracle sql teljesítményéhez . Letöltve: 2010. február 17. Az eredetiből archiválva : 2010. február 11..
  2. MySQL nyelvi referencia . Hozzáférés dátuma: 2009. július 24. Az eredetiből archiválva : 2009. július 14.