Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Alex Povolotsky                      2:5020/145     24 Feb 2004  10:17:18
 To : "Nick Kostirya"
 Subject : Страшная быль
 -------------------------------------------------------------------------------- 
 
 .RFC-X-Complaints-To: usenet@tarkhil.over.ru
 .RFC-NNTP-Posting-Date: Tue, 24 Feb 2004 06:17:19 +0000 (UTC)
 .RFC-User-Agent: Gnus/5.1002 (Gnus v5.10.2) XEmacs/21.4 (Reasonable
 Discussion,\n berkeley-unix)
 .RFC-Cancel-Lock: sha1:nQiAbSEvorlSINZDeC1Gem+lM0g=
 From: Alex Povolotsky <tarkhil@over.ru>
 
 "Nick Kostirya" <nick@han.kherson.ua> writes:
 >> Рассказать, что ли, страшную быль о том, как программист решал задачу с
 > БД?...
 >
 > Расскажите.
 
 Дано: сайт с анекдотами, который безбожно тормозит даже под не очень
 большой нагрузкой.
 
 Исследования показывают следующую картину:
 
 База анекдотов. Hомер (нумерация не сквозная), категория, текст. Hужно на
 каждой странице выдавать три случайных анекдота нужной категории.
 
 Как это решает программист?
 
 в цикле генерирует случайное число от 1 до максимального номера анекдота,
 выбирает (путем select *) анекдот. Если подходит - добавляет к списку, если
 нет - генерит еще один запрос. Пока не наберет три анекдота. Учитывая
 примерно два десятка категорий, заполненных более-менее равномерно, и
 примерно 20% пустых номеров - получаем, что для трех анекдотов нужно
 сделать как бы не полсотни запросов. Всегда с select *, а анекдоты бывают
 длинные... 
 
 Жаль, он уже уволился. Убил бы... 
 
 Кстати, при экспериментах выяснилось, что order by rand() у mysql работает,
 мягко говоря, не быстро. Оптимальный вариант - делать временную таблицу, в
 нее вытягивать категорию, и уже из таблицы в памяти - select * from
 temptable limit 3 order by rand()...
 
 -- 
 Alex.
 --- ifmail v.2.15
  * Origin: Minas Tirith (2:5020/145@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Страшная быль   Alex Povolotsky   24 Feb 2004 10:17:18 
Архивное /ru.perl/1044345ec4d8d.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional