У меня есть структура базы данных mysql, как показано ниже:
CREATE TABLE test (
id int(11) NOT NULL auto_increment,
title text NULL,
tags text NULL,
PRIMARY KEY (id)
);
данные о тегах полей хранятся в виде текста через запятую, такого как html, php, mysql, веб-сайт, html и т. Д.
Теперь мне нужно создать массив, который содержит около 50 случайно выбранных тегов из случайных записей.
В настоящее время я использую rand (), чтобы выбрать 15 случайных данных mysql из базы данных, а затем храню все теги из 15 записей в массиве. Затем я использую array_rand () для рандомизации массива и выбора только 50 случайных тегов.
$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);
Теперь у меня огромные записи в базе данных, и из-за этого; rand () работает очень медленно и иногда не работает. Так может кто-нибудь дать мне знать, как правильно справиться с этой ситуацией, чтобы моя страница работала нормально.