Jump to content
php.lv forumi

MYSQL Ieraksta pacelšana.


Raivis.purins

Recommended Posts

Relāciju datubāzēm nav tādas ierakstu kārtības - ierakstiem pašiem par sevi select rezultātā nav nekādas kārtības. Pēc būtības vienu dienu tu var saņemt ierakstus kārtībā A B C, bet nākamajā B A C.

Ja gribi, lai ierakstiem ir konkrēta kārtība, tad tie ir jākārto ar ORDER BY. Un kā marcis tev jau saka - tev jālieto vēl viena papildus kolonna ar pozīcijas numuru select rezultātā pēc kā arī tad sakārtot tos ierakstus.

Link to comment
Share on other sites

tāpēc, ka ieraksti fiziski tiek ielikti atmiņā(diskā) jau secīgi (tiek pārbuildota visa datu atrašanās vietas, ja ieliek kaut ko starpā), attiecīgi pie join-a, relāciju ieraksti tiek pa taisno "ieskanēti" nevis atlasīti (nosacījums, kad nav order by uz to tabulu)

 

Praksē pārbaudīts risinājums :)

Link to comment
Share on other sites

Nē, nu protams var paļauties uz tādām "nedokumentētām" lietām (tb uz to kā konkrēti DB ir implementēta). Tikpat labi var paļauties uz neinicializētām mainīgo vērtībām (pieņemot, ka tur būs 0). Uz daudz ko var tā paļauties... Bet cik tas prātīgi - tas jau cits jautājums.

Ja dokumentācijā/standartā nav teikts, ka rezultātam būs noteikta kārtība, tad tā to vajag arī saprast. Citādi mainīsies db versija/formāts un skaties, ka zili brīnumi tev nenotiekās ;)

Link to comment
Share on other sites

Atļaušos oponēt - klāsterētais indekss.

 

Iespējams ka kaut kādā DBVS, pie kaut kādiem nosacījumiem (spec tabulas veids, spec indekss utml) var vienmēr nolasīt datus noteiktā kārtībā, taču, ja vien tas nav speciāli minēts dokumentācijā, ka tā drīkst darīt un tas ir atbalstīts, es uz to nepaļautos. Jo tas nozīmē šodien ir, rīt (cita versija, cits OS, cits vēl kaut kas) vairs nav.

Un SQL standarts arī jauki saka, ja nav ORDER BY klauzas, tad sakārtojums ir "implementation-dependent".

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

×
×
  • Create New...