Citat:
... nekad mi se čini da nema razlike.
Razlika je uočljiva tek pri velikom odnosu broja članova nelimitiranog skupa i broja članova limitiranog skupa - recimo ako je taj odnos reda veličine 2, 3 i više.
Citat:
Kako je podupit uvek isti ...
Ovo tumačim da je podupit nezavisan od glavnog upita. U tom slučaju query planner pravi plan izvršavanja tako da se podupit izvršava samo jednom, te se ti rezultati nakon toga povezuju sa ostatkom upita. Dakle nema potrebe za keširanjem.
U slučaju da glavni upit izvršavaš više puta a da ti je pri svim tim izvršavanjima rezultat podupita uvek isti, onda možeš keširati rezultat podupita upotrebom privremenih tabela ili upotrebom običnih tabela. Tada se podupit svodi na prosto selektovanje svih članova pomoćne tabele. Odnosno:
Code:
SELECT *
FROM neka_tabela
WHERE neki_atribut IN (podupit);
se može transformisati u
Code:
CREATE TEMPORARY TABLE tt_podupit AS
podupit;
SELECT *
FROM neka_tabela
WHERE neki_atribut IN (SELECT * FROM tt_podupit);
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming." - Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo