|  | Posted by Jochem Maas on 06/05/05 23:40 
Brian Dunning wrote:> I am using a routine to find 50 random records in a large MySQL
 
 how random does it need to be? if *psuedo* (nobody start on the
 computer random is not really random argument - go watch "What the bleep
 do we know?" instead) random is okay maybe you could define a list
 of [funky/weird] ORDER BY subclauses and randomly
 pick one to add to you sql query. by funky/weird I meaning using
 multiple comlumn and direction indentifiers in unusual combinations.
 
 to increase the psuedo randomness you could potentially use a randomized
 FIRST declaration (or OFFSET in MySQL) - rather like you would with a
 pagination routine. but thats dependent on the size of the constrained
 resultset you get.
 
 or alternatively, copy the data offline. run a "nice -19'd" script to
 generate a batch of random 50 item sets. then let the online site
 use the generated sets ... item [ids] in a set not found in the live DB could
 be filled in by a query using the same where clause (but without the randomization)
 and with a relevant FIRST, SKIP declaration for the 'fill', which
 assuming your tables are indexed properly should be fast.
 
 hope thats understandable.
 rgds,
 Jochem
 
 > database (about a million records) where I generate a list of 50  random
 > unique ID's, and then use MySQL's "in" command to find them. I  can't
 > use "order by rand()" due to its performance hit.
 >
 > But I have to take it one more step: I want to first limit my found  set
 > to those matching a different search criteria, and then find 50  of those.
 >
 > Anyone? Can this be done all within MySQL, or is it going to require
 > some humongo PHP arrays?
 >
  Navigation: [Reply to this message] |