I have mysql database structure like below:
CREATE TABLE test (
id int(11) NOT NULL auto_increment,
title text NULL,
tags text NULL,
PRIMARY KEY (id)
);
data on field tags is stored as a comma separated text like html,php,mysql,website,html etc...
now I need create an array that contains around 50 randomly selected tags from random records.
currently I am using rand() to select 15 random mysql data from database and then holding all the tags from 15 records in an array. Then I am using array_rand() for randomizing the array and selecting only 50 random records.
$query=mysql_query("select * from test order by id asc, RAND() limit 15");
$tags="";
while ($eachData=mysql_fetch_array($query)) {
$additionalTags=$eachData['tags'];
if ($tags=="") {
$tags.=$additionalTags;
} else {
$tags.=$tags.",".$additionalTags;
}
}
$tags=explode(",", $tags);
$newTags=array();
foreach ($tags as $tag) {
$tag=trim($tag);
if ($tag!="") {
if (!in_array($tag, $newTags)) {
$newTags[]=$tag;
}
}
}
$random_newTags=array_rand($newTags, 50);
Now I have huge records on the database, and because of that; rand() is performing very slow and sometimes it doesn't work. So can anyone let me know how to handle this situation correctly so that my page will work normally.