ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 10 · 4లో పాఠం 2కోర్సులో 38/57~15 min
మాడ్యూల్ పాఠాలు (2/4)

వివరించండి మరియు విశ్లేషించండి

మీరు ఇప్పుడే సృష్టించిన మంచి సూచికను ఉపయోగించాలా వద్దా అని డేటాబేస్ ఎంచుకుంటుంది అని మీరు ఎప్పుడైనా ఆలోచిస్తున్నారా? మీరు ప్రశ్నపై ఎంటర్ నొక్కిన వెంటనే (చెయిన్డ్ గ్రూప్‌తో లాంగ్ జాయిన్ అవ్వండి), క్వరీ ప్లానర్ ప్రశ్నను బయటకు తీసుకెళ్లడానికి డజన్ల కొద్దీ వ్యూహాలను గణిస్తుంది మరియు సిద్ధాంతపరంగా నమ్మిన దాన్ని వేగంగా ఎంచుకుంటుంది.

కానీ డెవలపర్‌గా, మీరు క్వెరీ ప్లానర్ యొక్క చీకటి మనస్సును చూడగలగాలి.

వివరించండి

ప్లానర్ ఎలా కొనసాగించాలనుకుంటున్నారో తెలుసుకోవడానికి, మీ ప్రశ్న ప్రారంభంలో EXPLAIN అనే మ్యాజిక్ పదాన్ని ఉంచండి.

SQL
EXPLAIN SELECT * FROM orders WHERE status = 'delivered';

ఫలితం ఉత్తర్వులు కావు! బదులుగా, మీరు ప్లాన్‌ని అవుట్‌పుట్‌లో చూస్తారు (అంచనా గణాంకాలతో):

Code
Seq Scan on orders  (cost=0.00..25.88 rows=15 width=40)
  Filter: (status = 'delivered'::text)

ఇది మాకు చెబుతుంది:

  1. ప్లానర్ Seq స్కాన్ (బ్రూట్, మొత్తం డిస్క్ యొక్క సీక్వెన్షియల్ రీడ్)ని ఉపయోగిస్తుంది. బిలియన్ల ఆర్డర్లు ఉంటే చెడ్డది.
  2. ఇది ~15 అడ్డు వరుసలు తిరిగి వస్తాయని అంచనా వేస్తుంది మరియు ముందుగా లోడ్ చేయబడిన CPU సైకిల్స్‌లో "ఖర్చు"ని గణిస్తుంది.

విశ్లేషించి వివరించండి

EXPLAIN అనేది అల్గారిథమిక్ అంచనాలపై ఆధారపడి ఉండగా (డేటాపై గత కొన్ని గంటల్లో గణించబడిన గ్లోబల్ గణాంకాల ఆధారంగా), EXPLAIN ANALYZE వాస్తవానికి క్వెరీని రియల్ (మరియు పూర్తి తార్కిక ఫలితాల కోసం వేచి ఉంది) గణితశాస్త్రపరంగా సంపూర్ణ పరంగా పోల్చి చూస్తుంది.

SQL
EXPLAIN ANALYZE SELECT * FROM orders WHERE customer_id = 90;
Code
Index Scan using idx_orders_cust on orders  (cost=0.15..8.13 rows=4 width=40) (actual time=0.012..0.015 rows=4 loops=1)
  Index Cond: (customer_id = 90)
Planning Time: 0.081 ms
Execution Time: 0.033 ms

హుర్రే! డేటాబేస్ మా సెకండరీ idx_orders_cust ఇండెక్స్‌లో ఇండెక్స్ స్కాన్ని వర్తింపజేయాలని నిర్ణయించిందని ఇక్కడ మీరు తెలుసుకుంటారు, ఇది సెకనులో వెయ్యి వంతు మైక్రోస్కోపిక్ ఎగ్జిక్యూషన్ సమయాన్ని తీసుకుంటుంది, ఫ్లైలో మిలియన్ల కొద్దీ అడ్డు వరుసలను దాటవేస్తుంది.

మీ వంతు

వ్యాయామం#sql.m10.l2.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

PostgreSQL 10 యూనిట్ల కంటే తక్కువ ప్రస్తుత స్టాక్‌తో ఉత్పత్తులను ఎలా కనుగొనాలనుకుంటుందో తెలుసుకోవడానికి ప్రాథమిక EXPLAIN ఆదేశాన్ని వ్రాయండి. (ఈ దశలో విశ్లేషణను ఉపయోగించవద్దు.)

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

ఇప్పటికే ఉన్న స్టేట్‌మెంట్ ప్రారంభంలో EXPLAIN అనే పదాన్ని ముందుగా ఉంచండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

సత్యమైన కొలమానాలను పొందడం

వ్యాయామం#sql.m10.l2.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

మేము గణితశాస్త్రపరంగా ఊహించిన స్కెచ్ కాదు, నిజమైన పనితీరు నిర్ధారణ (సమయాలు మరియు చక్రాలు) కావాలి.\nఅధ్యయనం చేయడానికి అంకితమైన స్టేట్‌మెంట్‌ను ఉపయోగించండి, వాస్తవానికి దీన్ని అమలు చేయడం ద్వారా, జనవరి 1, 2025 ('signed_up_on' <'2025-01-01')కి ముందు సైన్ అప్ చేసిన 'కస్టమర్‌ల' అందరి శోధన.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

EXPLAIN తర్వాత ANALYZE అనే పదాన్ని జోడించండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది