Not sure if this is a "better" idea or faster, but I'd look into using rand() function and limit ... (not tested)
select X from Y where int(rand()*50000) = 1 limit 1 On Wed, Jul 02, 2003 at 07:32:13PM +0400, ??????? ?????? wrote: > Hello. > > I have big table (50 000 records, 100 Mb), and want to get 1 random > record from it. > > CREATE TABLE news ( > id int(10) unsigned NOT NULL auto_increment, > description varchar(255) NOT NULL default '', > PRIMARY KEY (id) > ) TYPE=MyISAM PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1; > > > $max_id='SELECT MAX(id) FROM news'; > $id = int(rand()*$max_id+1); > 'SELECT description WHERE ID='.$id; > > it's vary slow way. May be somebody have better idia? > I use MySQL 3.23
