Jump to content
php.lv forumi

Dzēš vecos ierakstus


Artenis
 Share

Recommended Posts

Kā izskatītos kverijs, kur vajadzētu nodzēst katram lietotājam visus ierakstus, ja ierakstu skaits vienam userim pārsniedz 100, tobiš ja vairāk par 100 ierakstiem, tad lai nodzēš tam lietotājam visus ierakstus, kas vecāki par 100 un atstāj jaunākos 100.

tas ir ja ir 103 ieraksti, tad nodzēš 3 ierakstus, kas virs 100.

Atvainojos, par tik nesekarīgu skaidrojumu, bet varbūt kāds var palīdzēt! Paldies!

Link to comment
Share on other sites

Gribētos to bez cikla izdarīt vai tā būu iespējams izdarīt? Jo būs daudz lietotāju.

hmm, laikam tomēr vajadzēs ciklu, jo ir jāatrod katra individuālā usera vecākie ieraksti. anyway tā ir maintenance darbība, un tādas paņem vairāk laika

 

ORDER BY + LIMIT http://dev.mysql.com/doc/refman/5.0/en/delete.html

starpību/skaitu priekš LIMIT aprēķini atsevišķā kverijā

tad sakārto tā, lai vecākie ieraksti ir pirmie un tos arī nodzēs (attiecīgo skaitu)

tb 2x kveriji tikai (uz katru useri :D)

 

EDIT: nu jā, ar codeza subselektiem jau ir savādāk...

kruta, ko lai citu pasaka ;)

Edited by 2easy
Link to comment
Share on other sites

cikls parādās, ja jādzēš šādi ārā katram userim.

 

Nedaudz paspēlējoties, sanāca šāds:

 

userdata

-------

id int

uid int - user-a id

 

DELETE FROM userdata WHERE id in (SELECT id FROM (SELECT *,IF(l.uid=@b,@a:=@a+1,@a:=0) as a,@b:=l.uid FROM userdata as l,(SELECT @a:=0) as t ORDER BY uid DESC ,id desc) as g WHERE a>=100);

 

1) SELECT selekto visu tabulu, aprēķinot katram, kurš ieraksts pēc kārtas tas ir atbilstošajam uid.

2) SELECT atlasa tikai tos, kuri ir 100 un vecāki pēc kārtas, sākot no jaunākā.

3) DELETE dzēš ārā visus, kuriem id atbilst ar 2. SELECTA selektotajiem.

Link to comment
Share on other sites

Ir pamatots iemesls tam, kāpēc vajag dzēst visiem lietotājiem uzreiz?

Nu tīri no admina loga laikam pārskatāmības dēļ tā varētu būt nepieciešamība.

Bet savādāk, vai tad nepietiek ja dzēsīs katram lietotājam, pirms atrāda tam, kurš pieprasa?

Viena liela bremze vs daudzas sīkas nemanāmas.

Link to comment
Share on other sites

imho, to darīs kkāds cron jobs 1x dienā (vismaz pēc tā izskatās)

 

anyway man jau liekas, ka ciklā ar php taisot daudzus delete varētu nebūt īpaši daudz lēnāk nekā ar krutajiem codeza subselektiem. varētu atkal uzģenerēt testa datus un notestēt to performanci ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...