Mārtiņš ([info]skalpelis) rakstīja [info]koderi kopienā,
@ 2003-07-07 00:47:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
MySQL 3.23 vs. 4.0
Viena no uzkrītošākajām atšķirībām, ko esmu pamanījis starp MySQL 3.23 un 4 ir tā, ka 3.23 nav tādas operācijas kā xor jeb ^.

Xor būtība - varētu tulkoties kā vai arī - binārā operācija - atgriež true tad, ja tikai viens no abiem apgalvojumiem ir patiess, t.i.:
true ^ true = false
true ^ false = true
false ^ true = true
false ^ false = false

Taču, kā jau esmu dzirdējis, nafig tāds vajadzīgs?
Pieņemsim, ir tabula ar 5000 rindām, katrā ir statuss, kas atzīmējas ar 1 vai 0. Kā varētu rīkoties, ja visām rindām vajadzētu uzstādīt pretējo statusu? Varētu uzrakstīt skriptu, kas katras rindas statusu izvelk laukā, tad ar kaut kādus skriptu, popularitātes pēc pieņemsim, php, apgriežam uz pretējo un ievietojam iekšā. 5001 querys kā minimums. Jo vairāk, ja tas ir nepieciešams pietiekami bieži, tas sanāk nepiedodami daudz, protams.
Priekš tā arī var izmantot paredzēts xor.
'update table set status = status ^ 1' (tas ir tikai piemērs, protams).
voila

Stāsts, protams, nav par to. Doma man bija tāda - bija uzrakstīts php skripts, kas līdzīgā veidā izdarījās ar mysql. Uz datora, uz kura testējos, stāv uzlikts MySQL 4.0.13. Savukārt uz paredzamā servera, uz kura tam būs jābūt, ir MySQL 3.23 (precīzi nepateikšu, kurš, nezinu).
Un gribas atrisināt šo problēmu, tomēr ar ne vairāk kā vienu queryu. Tā rezultātā tapa:
'update table set status = abs(status - 1)'


(Lasīt komentārus) - (Ierakstīt jaunu komentāru)


[info]aiks
2003-07-07 11:09 (saite)
:)
klasiskais risinaajums, aizmirsu kursh pirmais shito izdomaaja, bet ja nemaldos bija viens no algoritmu guru, kursh ieksh fortra nshito pirmo reizi izdariija .. - pats arii shito esmu n-taas reizes izmantojis

(Atbildēt uz šo) (Diskusija)


[info]aiks
2003-07-07 11:17 (saite)
tur gan ideja bija sekojosha - nepiecieshams, lai dabuutu sakojoshus veertibu rindu - (1,0,1,0,1,0,1,0,1 .... ) un tad nu ciklaa -
x=abs(x-1) ... shito btw var arii webaa shur tur izmantot, kur jaadabon - viena tumshi peleeka, otra gaishi peleeka striipinja u.t.t tabulas formateeshanai...

(Atbildēt uz šo) (Iepriekšējais)


[info]skalpelis
2003-07-07 11:48 (saite)
oho :)
Kārtējo reizi izgudroju velosipēdu :)

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]aiks
2003-07-07 12:03 (saite)
btw, ja nemaldos shams par to pat kaadu preemiju or balvu sanjeema, neatceros

(Atbildēt uz šo) (Iepriekšējais)


(Lasīt komentārus) -

Neesi iežurnalējies. Iežurnalēties?