List:General Discussion« Previous MessageNext Message »
From:Rhino Date:April 26 2005 3:53pm
Subject:Re: Get a Random Row on a HUGE db
View as plain text  
How about using the rand() function built into MySQL? You could use it to generate a
random number, then find the row whose primary key equals that random number, then do a
single-row select on that row.

Rhino
  ----- Original Message ----- 
  From: gunmuse@stripped 
  To: Mysql 
  Sent: Tuesday, April 26, 2005 11:33 AM
  Subject: Get a Random Row on a HUGE db


  I am wanting to display a random page from my site, But I have over 12,000 articles
right now and we add over 150 per day.  What I wound up doing was a Virtual DOS attack on
my own server because the 40 mb db was being loaded to many times.

  I have tons of memory and a Dell Dual Xeon 2.8 gig.

  Can someone think up a better way of doing this?  I wish Mysql would just bring me back
1 valid random row  It could be used in so many ways it should just be a part of MySql
anyway.

  <?php
  ini_set("display_errors", '1');
  header("Pragma: private");
  header("Cache-Control: post-check=0, pre-check=0", false); 
  header("Cache-Control: no-cache, must-revalidate");
  require_once("firebase.conf.php");
  $dbi = new DBI(DB_URL);
  $stmt = "Select * from firebase_content Order By rand() DESC Limit 0, 1";
  $result = $dbi->query($stmt);
  while($row = $result->fetchRow())
  {
   $title = $row->title;
   $cate = $row->category;
   $get = "Select cat_url from firebase_categories where cat_name='$cate'";
   $now = $dbi->query($get);
   $rows = $now->fetchRow();
   $url = $rows->cat_url;
   $link = $url . $title;
  }
  header("Location: http://www.prnewsnow.com/$link");
  exit;
  /* Sudo code that I am trying to create to relieve server stress.
  function randomRow(table, column) {
  var maxRow = query("SELECT MAX($column) AS maxID FROM $table");
  var randomID;
  var randomRow;
  do {
  randomID = randRange(1, maxRow.maxID);
  randomRow = query("SELECT * FROM $table WHERE $column = $randomID");
  } while (randomRow.recordCount == 0); return randomRow;
  }
  */
  ?>
  Thanks
  Donny Lairson
  President
  29 GunMuse Lane
  P.O. box 166
  Lakewood NM 88254
  http://www.gunmuse.com
  469 228 2183 



------------------------------------------------------------------------------


  No virus found in this incoming message.
  Checked by AVG Anti-Virus.
  Version: 7.0.308 / Virus Database: 266.10.2 - Release Date: 21/04/2005

Attachment: [text/html]
No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.308 / Virus Database: 266.10.2 - Release Date: 21/04/2005
Thread
Get a Random Row on a HUGE dbgunmuse26 Apr
  • Re: Get a Random Row on a HUGE dbRhino26 Apr
  • Re: Get a Random Row on a HUGE dbDawid Kuroczko27 Apr
RE: Get a Random Row on a HUGE dbJay Blanchard26 Apr
  • RE: Get a Random Row on a HUGE dbgunmuse26 Apr
    • Re: Get a Random Row on a HUGE dbPeter Brawley26 Apr
      • RE: Get a Random Row on a HUGE dbgunmuse26 Apr
      • RE: Get a Random Row on a HUGE dbgunmuse26 Apr
        • Re: Get a Random Row on a HUGE dbGary Richardson27 Apr
    • Re: Get a Random Row on a HUGE dbChristian Meisinger27 Apr
    • Re: Get a Random Row on a HUGE dbScott Gifford27 Apr
    • Re: Get a Random Row on a HUGE dbJigal van Hemert28 Apr