sql >> Databasteknik >  >> RDS >> Oracle

sql Optimizer för stora Db-tabeller

Du bör förmodligen börja med FÖLLA PLAN .

Redigera sedan din fråga och posta SQL-satsen och utdata från EXPLAIN PLAN.

Senare . . .

Jag kommer inte att hjälpa dig mycket med den frågan. 269 ​​rader, minst 29 SELECT, parallella frågor, fjärrdatabaser, yttre kopplingar (gammal stil) och så vidare.

Det bästa rådet jag kan ge dig är

  • få mer information från EXPLAIN PLAN och
  • förenkla problemet.

plantabellen har fler kolumner än vad som vanligtvis postas. Kolumnerna COST, CARDINALITY, BYTES och TIME kan vara användbara för att prioritera din inställning.

Du har 10 genomsökningar av hela tabellen i den frågan. ("TABELLÅTKOMST FULLSTÄNDIG" i frågeplanen.) Det är vanligtvis ett dåligt tecken; helbordsskanningar tar ofta relativt lång tid att köra. Det är inte alltid ett dåligt tecken. En fullständig genomsökning av en liten tabell kan vara snabbare än en indexskanning.

Börja med att få EXPLAIN PLAN-utdata för var och en av de 29 SELECT-satserna i din fråga. Om någon av dem visar en fullständig tabellsökning kan du förmodligen förbättra deras prestanda med lämpliga index . (Oracle stöder många olika sorters index. Glöm inte möjligheter för index med flera kolumner.) Hur som helst kommer EXPLAIN PLAN-utdata att hjälpa dig att identifiera den långsammaste av de 29 SELECT.



  1. Returnerar en lista över alla användare, parat med deras mest populära följare. Ju fler följare någon har, desto mer populära är de

  2. Infogade data sparades inte i phpmyadmin-databasen

  3. Kan inte se rader infogade av en pågående transaktion när isoleringsnivån är READ_UNCOMMITTED

  4. Hur man uppdaterar en graf med matplotlib