First, see if we can optimise that query a little:
SELECT `m`.`id`
FROM `marketingDatabase` AS `m`
LEFT JOIN `reminders` AS `r` ON ( `r`.`id` = `m`.`id` )
WHERE
`m`.`do_not_call` != 'true'
AND `m`.`status` = 'Pending'
AND `m`.`install_id` = 'AN ID HERE'
AND `r`.`id` IS NULL
ORDER BY
rand()
LIMIT 1
NOTE: This is just an idea, and has not been tested in the wild.
Why not get a count of the possible number of records to find, and then use PHP to find a random row number from that count, then requery to find it.
$rowCount = 0;
$rowCountSql = "SELECT COUNT(*) AS `rowcount`
FROM `marketingDatabase` AS `m`
LEFT JOIN `reminders` AS `r` ON ( `r`.`id` = `m`.`id` )
WHERE
`m`.`do_not_call` != 'true'
AND `m`.`status` = 'Pending'
AND `m`.`install_id` = 'AN ID HERE'
AND `r`.`id` IS NULL";
if( $rowCountRes = mysql_query( $rowCountSql )
&& mysql_num_rows( $rowCountRes )
&& $r = mysql_fetch_assoc( $rowCountRes ) )
$rowCount = $r['rowcount'];
$oneRow = false;
$oneRowSql = "SELECT `m`.`id` AS `rowid`
FROM `marketingDatabase` AS `m`
LEFT JOIN `reminders` AS `r` ON ( `r`.`id` = `m`.`id` )
WHERE
`m`.`do_not_call` != 'true'
AND `m`.`status` = 'Pending'
AND `m`.`install_id` = 'AN ID HERE'
AND `r`.`id` IS NULL
LIMIT ".(int) $rowCount.", 1";
if( $oneRowRes = mysql_query( $rowCountSql )
&& mysql_num_rows( $oneRowRes )
&& $r = mysql_fetch_assoc( $oneRowRes ) )
$oneRow = $r['rowid'];
This may prove to have no performance benefits, but I just thought I would put it out there to see if any of my more learned colleagues could better it.
A further exploration of the above (which I would test, if I had access to your database...)
SELECT `m`.`id` AS `rowid`
FROM `marketingDatabase` AS `m`
LEFT JOIN `reminders` AS `r` ON ( `r`.`id` = `m`.`id` )
WHERE
`m`.`do_not_call` != 'true'
AND `m`.`status` = 'Pending'
AND `m`.`install_id` = 'AN ID HERE'
AND `r`.`id` IS NULL
LIMIT ( FLOOR( RAND( ) * (
SELECT COUNT(*) AS `rowcount`
FROM `marketingDatabase` AS `m`
LEFT JOIN `reminders` AS `r` ON ( `r`.`id` = `m`.`id` )
WHERE
`m`.`do_not_call` != 'true'
AND `m`.`status` = 'Pending'
AND `m`.`install_id` = 'AN ID HERE'
AND `r`.`id` IS NULL ) ) ) , 1
Just an idea...