The SitePoint Forums have moved.

You can now find them here.
This forum is now closed to new posts, but you can browse existing content.
You can find out more information about the move and how to open a new account (if necessary) here.
If you get stuck you can get support by emailing forums@sitepoint.com

If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

What I want to do is to try inserting a new row with a value into the lURL field, but if the record already exists, then set a variable @sURL to the value of the sURL column for the record in question.

Never mind, seems that actually I do have to check if the value already exists before trying to insert it, as the InnoDB storage engine allocates auto increment values before the actual INSERT. So if an insert fails because of a duplicate value, the auto increment value will be still be increased.

It seems that checking if a value exists before trying to insert it doesn't make as much of a difference to the speed as I had thought either.

The function I posted above (should actually have SET@sURL = NULL; at the top of it) benchmarked the following starting with a clean table and then the benchmark being run 4 times in succession: