En ledtråd på SQL- språket ( engelska hint ) är ett verktyg som låter dig explicit påverka frågeplanen .
Själva SQL-frågan innehåller en indikation på vilken information som behöver hämtas från databasen, men innehåller inga instruktioner om hur man gör detta. I det allmänna fallet bestämmer relationella DBMS :er frågeplanen enligt sina egna regler och exekverar den följaktligen. Men i praktiken kan ett fall uppstå att en sådan frågeplan, på grund av faktorer som inte beaktas av DBMS, logiska brister eller speciella krav, kan visa sig vara suboptimal. Tipset tillåter dig att explicit ingripa i bildandet av frågeplanen, utan att helt förlita dig på automatisering.
Syntaxen och uppsättningen av tips beskrivs inte i SQL-standarden , den är starkt beroende av den specifika implementeringen av DBMS.
Följande ledtrådsuppgifter urskiljs:
I vissa fall kan DBMS ignorera tipset.
Microsoft SQL Server har lagt till några nyckelord för att tipsa om optimeraren, till exempel i en fråga:
VÄLJ * FRÅN kunder C MED ( INDEX = stad ) INNER LOOP JOIN Beställningar O PÅ O . Kund -ID = C . Kundnummer VAR C . Stad = 'Madrid'det finns två tips:
I Oracle Database infogas tips i frågetexten som en kommentar. Texten i kommentaren tolkas och, om den visar sig matcha syntaxen för promptspråket, accepteras den. På grund av denna syntax kan en fråga med tips exekveras på ett annat DBMS utan modifiering, och ett stavfel i tipset gör att tipset behandlas av servern som en enkel kommentar [1] . Till exempel, i en begäran:
VÄLJ /*+ full(t) */ t . namn FRÅN tbl1 t VAR t . datum = SYSDATE SELECT /*+ index(t ind_date) */ t . namn FRÅN tbl1 t VAR t . datum = SYSDATEanvände följande tips:
I MySQL , från och med version 3.23.12, kan du specificera vilka index (nycklar) MySQL ska använda för att hämta information från en tabell [2] :
tabellnamn [[ AS ] alias ] [[ ANVÄND INDEX ( nyckellista )] | [ IGNORERA INDEX ( key_list )] | FORCE INDEX ( key_list )]]