sql >> Database >  >> RDS >> Oracle

Top 5 tijdrovende SQL-query's in Oracle

Ik vond deze SQL-instructie een nuttige plek om te beginnen (sorry, ik kan dit niet toeschrijven aan de oorspronkelijke auteur; ik heb hem ergens op internet gevonden):

SELECT * FROM
(SELECT
    sql_fulltext,
    sql_id,
    elapsed_time,
    child_number,
    disk_reads,
    executions,
    first_load_time,
    last_load_time
FROM    v$sql
ORDER BY elapsed_time DESC)
WHERE ROWNUM < 10
/

Hiermee worden de belangrijkste SQL-instructies gevonden die momenteel zijn opgeslagen in de SQL-cache, gerangschikt op verstreken tijd. Verklaringen zullen na verloop van tijd uit de cache verdwijnen, dus het kan geen zin hebben om de batchtaak van gisteravond te diagnosticeren wanneer u 's middags naar uw werk gaat.

U kunt ook proberen te bestellen op disk_reads en uitvoeringen. Executies zijn handig omdat sommige slechte toepassingen dezelfde SQL-instructie veel te vaak verzenden. Deze SQL gaat ervan uit dat u bindvariabelen correct gebruikt.

Vervolgens kunt u de sql_id en child_number van een verklaring en voer ze in deze baby:-

SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('&sql_id', &child));

Dit toont het daadwerkelijke plan uit de SQL-cache en de volledige tekst van de SQL.



  1. [Video] Inleiding tot JSON-gegevenstypen in PostgreSQL

  2. SQL Server TempDB-bewaking met behulp van dynamische beheerweergaven (DMV)

  3. Oracle ODP.NET versie agnostisch alternatief

  4. Vind het totale aantal resultaten in mySQL-query met offset+limiet