Hi Csaba,

Because I have a where clause limiting which records I'm deleting.

I'm deleting old info from a database, so I'm doing:

DELETE FROM sessions WHERE EXISTS (SELECT sessiontime FROM sessions WHERE sessiontime < (timenow-7days) LIMIT 100)

(timenow-7days is evaluated in PHP and made an int).

So every time the page gets hit, I'm deleting up to 100 records that are older than 7 days..


Csaba Nagy wrote:
Hi Chris,

Just a thought: if you have to clear the table anyway, wouldn't it work
for you to use truncate ? That should be faster than delete.

HTH,
Csaba.

On Thu, 2005-04-07 at 04:11, Chris Smith wrote:

I don't care about the order in my particular case, just that I have to clear the table.

I'll try the subquery and see how I go :)

Thanks!

Neil Conway wrote:

Chris Smith wrote:


I'm trying to use a limit clause with delete, but it doesn't work at the moment


It isn't in the SQL standard, and it would have undefined behavior: the sort order of a result set without ORDER BY is unspecified, so you would have no way to predict which rows DELETE would remove.


delete from table where x='1' limit 1000;


You could use a subquery to achieve this:

DELETE FROM table WHERE x IN
   (SELECT x FROM table ... ORDER BY ... LIMIT ...);

-Neil

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
  (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])





-- Regards,

Chris Smith

 Unit 2, 3 National Street, Rozelle, NSW 2039 Australia

Ph: +61 2 9555 5570
Fx: +61 2 9555 5571

email: [EMAIL PROTECTED]
web: http://www.interspire.com

---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

Reply via email to