MySQL'am, Postgresam un vēl iespējams šim tam ir daiļa nestandarta konstrukcija LIMIT from, how much
Piem., iekš Oracle šādas lietas nav. Taču, viens daiļš selekts prot to imitēt.
SELECT * FROM ( SELECT * FROM ( SELECT * FROM ( SELECT * FROM ( SELECT order–key, data–values FROM table ORDER BY order–key DESC ) WHERE rownum <= max–limit ) ORDER BY order–key ASC ) WHERE rownum <= min–limit ) ORDER BY order–key DESC
Pie kam, iesaku ar šo rownum
uzmanīties. Elfz iepointoja, ka jamo var salīdzināt tikai ar <
vai <=
. Piem., SELECT COUNT(lauks) FROM table WHERE rownum > 1
vai SELECT COUNT(lauks) FROM table WHERE rownum >= 2
atgriezīs 0 pat tad, ja tabulā ir dikti daudz ierakstu.
1 hm @ 11:44 (2004. gada 28. janvāris)
varbuut shitaa ir labaak?
select * from (select rownum rownum1, doc_rsn from tw1_document) where rownum1>10 and rownum1<20
shitas buus baigais DB hits ganjau… bet es nezinu kas ir sliktaak tie 5 selekti vai shie 2…
2 DazzleWand @ 12:04 (2004. gada 28. janvāris)
Ņja … dazji labi Oracle "guru" šo to sliktu pateiktu par piecu līmeņu subselectu …
3 sorehead @ 13:04 (2004. gada 28. janvāris)
oracle ir speciāls vaicājumu optimizācijas rīks, ar kuru tad arī ir iespējams pārbaudīt, kurš no vaicājumiem izpildās ātrāk (tas protams ir vesels kurss priekšmētā DBVS, bet nu tomēr, iespēja pastāv)..
4 hm @ 13:27 (2004. gada 28. janvāris)
var arii pastiities execution plaanu ar visiem laikiem ;]
5 Jāzeps @ 13:45 (2004. gada 28. janvāris)
A kāpēc tie ORACLE veidotāji neuzveido tādu pašu?
6 whateva @ 13:51 (2004. gada 28. janvāris)
SELECT num, info
FROM (SELECT ROWNUM num, info
FROM (SELECT info
FROM some_table
ORDER BY info))
WHERE num BETWEEN 2 AND 10
shitaa var ar nedaudz mazaak subselectiem to pashu dabuut
7 whateva @ 13:53 (2004. gada 28. janvāris)
pie tam explain plans uzraada, ka tas ir ap 3x lapaaks nekaa ar 5 subselectiem
8 Tigers @ 13:56 (2004. gada 28. janvāris)
Ar rownumu viss būtu kulē, ja viņš to ieraksta numuru piemestu pēc tam, kad resultsets ir noorderēts. Bet to viņš izdarīt nevar, rezultātā nākas šitā dilsties.
Hm variants liekas vienkāršāks, bet tais fullscan visai tabulai.
9 whateva @ 14:03 (2004. gada 28. janvāris)
bet protams, jo tak saorderēt vajag.
uzliec indexu un būs ok :P
10 endrju @ 17:37 (2004. gada 28. janvāris)
Es paklusēšu… Oracle speciālisti…
11 laacz @ 17:39 (2004. gada 28. janvāris)
endrju:
a) Kurš teica, ka speciālisti, izņemot Tevi? (Paldies par komplimentu)
b) Paklusē gan, nespeciālist :)
12 endrju @ 09:27 (2004. gada 29. janvāris)
Nestreso laacz ;–) Paranoja, ka visi vēl ļaunu vai brauc augumā? Da beidz… tas nav manā stilā.
13 Livingston @ 16:13 (2004. gada 30. janvāris)
Njā, ta ir Subselektu Kings no visiem, ko esmu redzējis :)
1. komentārā bija pareizā atbilde gadījumiem, ja nevajag sortēt
6. komentā variants ar sortēšanu
Abi krietni īsāki par to murgu :)
14 whateva @ 17:23 (2004. gada 30. janvāris)
to tad esi veel maz redzeejis, ja tas ir subselectu kings :D lai gan raxtot vienkaarshi selectu no ashpadsmittabulaam var to pashu uzraxtiit ar subselectiem, depends on tabulu, ierakstu skaitu un indexiem
15 Livingston @ 17:42 (2004. gada 30. janvāris)
Nu redzējis es esmu ļoti daudz, bet kings tas ir tādēļ, ka dara TIK elementāru lietu TIK samudrītā veidā.
Ir nācies redzēt arī gana daudz konstrukcijas
select .. where kaut_kas in
(select .. where kaut_kas in
(select .. where kaut_kas in
(select .. where kaut_kas in
(select .. where kaut_kas in
utt.
Bet tam selektam arī uzdevums bija nedaudz nopietnāks. Bet vienalga smieklīgi, ņemot vērā, ka to kodu rakstīja profesionāļi.
16 whateva @ 17:59 (2004. gada 30. janvāris)
bivajet, ka triviālām lietām meklējam superbuper sarežgītus risinājumus, pašam tā ir bijis :)