Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: select count, sum, .. left join, group by тормоза в одном запросе.
 
 автор: PercEdyow   (26.10.2007 в 23:42)   письмо автору
 
 

Привет!

Такая вот проблемка. Составил sql запрос, и как оказалось занимает в среднем 7 секунд. Хотелось бы сократить затрачиваемое время на выборку из базы, таким образом что бы было не более двух запросов для получения данных.


/*
      A namemap: genre, filename, info, size, info_hash, date, description, image
      B users: uploader
      C categories: category
      D summary: seeds, leechers, finished, dlbytes, speed
      E peers:  sumbytes, totalpeers
      F ratings: totrate
*/
$arr = $db->getAll("
    SELECT a.genre, a.filename, a.info,
 a.size, a.info_hash, a.data as date,
 a.image, b.username as uploader, 
c.name as category, d.seeds, d.leechers, 
d.finished, d.dlbytes, d.speed, 
((((a.size * count(e.pid)) - sum(e.bytes)) 
/ (a.size * count(e.pid))) * 100) as prgsf, 
(sum(f.rating) / count(f.added)) as totrate
    FROM namemap a LEFT JOIN users b ON (a.uploader = b.id) LEFT JOIN categories c
 ON (c.id = a.category) LEFT JOIN summary d 
ON (d.info_hash = a.info_hash) LEFT JOIN 
peers e ON (e.infohash = a.info_hash) LEFT 
JOIN ratings f ON (f.infohash = a.info_hash)
    GROUP BY a.genre, a.filename, a.info, 
a.size, a.info_hash, a.data, a.image, 
b.username, c.name, d.seeds, d.leechers, 
d.finished, d.dlbytes, d.speed
    ORDER BY data DESC
    LIMIT 10;
    ");

   
 
 автор: EXP   (27.10.2007 в 01:57)   письмо автору
 
   для: PercEdyow   (26.10.2007 в 23:42)
 

_

   
 
 автор: EXP   (27.10.2007 в 02:07)   письмо автору
 
   для: PercEdyow   (26.10.2007 в 23:42)
 

<< , a.data as date,

ORDER BY не должно быть таким ? ORDER BY date DESC



ON (a.uploader = b.id) таких ещё неточностей есть, вроде как в a нет uploader

   
 
 автор: cheops   (27.10.2007 в 10:49)   письмо автору
 
   для: PercEdyow   (26.10.2007 в 23:42)
 

Лучше использовать множество одно, двух-табличных запросов, чем один многотабличный - сможете сильно выиграть в скорости.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования