Ну и что что 40 столбцов то? Иногда это лучше, чем 10 JOIN. Хотя ДА, по правилам БД это не правильно... все данные должны быть по разным табличкам, у них должен быть ID, может быть даже составной и он должен все таблички собирать в 1 уникальную и не ДАЙ боже будет, где дублирование данных, лабу не зачтут 😂
kvins, никакой оптимизации вам не надо. Главное проставьте индексы, где надо и всё.
Когда у вас будет база весить более 5 ГБ и там будет более 10 млн. записей, ну можно подумать, чтобы её лишний раз не тревожить :)
Сначала считывайте в переменную $mass все ID из таблицы запросом.
//Потом делайте:
array_shift($mass); //Это перемешает массив.
//Потом выбираем ID
for($i=0;$i<СКОЛЬКО_НУЖНО;$i++)
{
$tmp=$mass[$i];
}
//Теперь через запятую их складываем
$zap=implode(',',$tmp);
//И делаем запрос, вместо rand()
.... WHERE id IN ($zap)....
Теперь у нас в ответке будет сколько нужно случайных строк.
Исправлено.
хотя можно даже без цикла...
Просто берёте все ID в массив, перемешиваете и берёте первых 3-10 элемента.
:)
for или while Вам в помощь, пусть в цикле формируются и закидываются в $randin[]
Потом просто 1 запрос с указанием какие ID вывести.
Считывайте все ID из таблицы, потом через PHP выбирайте рандомом из этого массива 1 значения и делайте уже запрос с точным ID и LIMIT 1
strtotime("$date +1 day"))
На 10-20% сложнее :)
Ну как бы флэш умеет обращаться к файлам и к php тоже можно сделать запрос, который в свою очередь из базы будет брать данные.