За последние 24 часа нас посетили 18635 программистов и 1599 роботов. Сейчас ищут 967 программистов ...

Помогите оптимизировать

Тема в разделе "PHP для новичков", создана пользователем inline, 25 ноя 2010.

  1. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    PHP:
    1. <?php
    2. function rands($sql)
    3. {
    4. $query = mysql_query($sql);
    5. while ($ids = mysql_fetch_array($query))
    6. {
    7. $arr[]  = $ids['id'];
    8. }
    9.  
    10. shuffle($arr);
    11.  
    12. for ($i=0;$i<5;$i++)
    13. {
    14. $un[] = $arr[$i];
    15. }
    16.  
    17. return  implode(",",array_diff($un, array('')));
    18.  
    19. }
    20. print rands("select code_model as id from model where top>3000 limit 3");
    21.  
    как по мне так многовато кода
    как-бы проще сделать?

    задача выбрать из таблицы 5 случайных id
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    ORDER BY RAND()
     
  3. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Не будешь отвечать хотя бы банальное "спасибо" - это будет мой последний ответ тебе.
     
  4. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    Apple
    тебе то конечно СПАСИБО и респект
    но я все это и затеял потому, что ORDER BY RAND() страшно тормозит на больших таблицах
     
  5. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Как вариант некоторой оптимизации - сделать выборку WHERE id > случайное_число_от_1_до_макс._id-10 LIMIT 10 ORDER BY RAND()

    id с ключом стессно