tymos
22.09.2007, 10:04:24
Mam taki oto kod. Niestety wygenerowanie tego trochę zajmuje i obciąża serwer. Nie mam pomysłu jak to rozwiązać :/
<h2>Links:</h2>
<ul>
<?php
include('wp-config.php');
$sql="Select * from `".$table_prefix."posts` ORDER BY RAND() LIMIT 25";
$show= '<a href="'.$row['guid'].'">'.$row['post_title'].'</a><br>';
}
?>
</ul>
kris2
22.09.2007, 18:22:39
w kazdym artykule o wydajnosci jest napisane zeby nie uzywac order by rand() poniewaz on musi obliczyc random dla kazdej krotki w bazie danych.
pomysly ktore przychodza mi do glowy:
załóż kolumne random , zaindeksowana. wgraj do niej losowe dane i rob select z order by po tej kolumnie.
i teraz możesz albo regenerować wartośc random po każdym jej odczytaniu
albo raz na jakis czas zapuszczac zapytanie generujace wszystkie randomy od nowa
to świetnie zadziała przy dużej ilości danych i małej ilości selectów
Drugi pomysł
załóż tabele zawierajaca dwie dane
id i wygenerowany random np:
1 235
2 632
3 345
id musi byc tyle ile masz w twojej tablicy.
i za kazdym losuj ide ktore wybierzesz na zasadzie
SELECT id from table WHERE random>rand() limit 25;
np zeby to dzialalo sprawnie polacz ten select jako JOIN z twoim zapytaniem.