|
|
|
| Привет!
Такая вот проблемка. Составил 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;
");
|
| |
|
|
|
|
|
|
|
для: PercEdyow
(26.10.2007 в 23:42)
| | _ | |
|
|
|
|
|
|
|
для: PercEdyow
(26.10.2007 в 23:42)
| | << , a.data as date,
ORDER BY не должно быть таким ? ORDER BY date DESC
ON (a.uploader = b.id) таких ещё неточностей есть, вроде как в a нет uploader | |
|
|
|
|
|
|
|
для: PercEdyow
(26.10.2007 в 23:42)
| | Лучше использовать множество одно, двух-табличных запросов, чем один многотабличный - сможете сильно выиграть в скорости. | |
|
|
|