Нужно вывести список товаров и для пагинации знать их кол-во.
Какой вариант будет быстрее:
1. Два запроса:
Один SELECT COUNT(*) AS count table ... и ещё 4 inner join
Два SELECT * FROM table ... и ещё 4 inner join
2. Добавлять в кэш массив данных после запроса, кол-во получать $sCount = count(массив)
Спустя 1 минута, 30 секунд (6.12.2011 - 09:08) Семён написал(а):
Естественно лучше COUNT
Спустя 13 минут, 48 секунд (6.12.2011 - 09:21) web-monster написал(а):
Сейчас используется конструкция такого вида:
Просто стало интересно есть ли смысл использовать такую конструкцию.
В качестве кэша используется Zend_Cache.
public function getMenu($type) {
if (false === ($data = $this->Cache_Get("menu"))) {
$data = array();
$result = mysql_query("SELECT * FROM places_category");
while ($row = mysql_fetch_assoc($result)) {
$data[$row["type"]][] = $row;
}
$this->Cache_Set($data, "menu", array("menu"), 3600 * 24 * 3);
}
return $data[$type];
}
Просто стало интересно есть ли смысл использовать такую конструкцию.
В качестве кэша используется Zend_Cache.
Спустя 1 минута, 45 секунд (6.12.2011 - 09:23) Семён написал(а):
А причём здесь постраничная навигация информации и вывод категорий в меню с использованием кеширования?
Спустя 4 минуты, 28 секунд (6.12.2011 - 09:28) web-monster написал(а):
Нет просто такая конструкция используется почти к каждому запросу, то есть вывод постраничной навигаации можно написать так:
public function getData($iCategory) {
if (false === ($data = $this->Cache_Get("places_{$iCategory}"))) {
$data = array();
$result = mysql_query("SELECT * FROM places WHERE id_category='$iCategory'");
while($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
$this->Cache_Set($data, "places_{$iCategory}", array("places"), 3600 * 24 * 3);
}
return $data;
}
$aData = $this->getData(4);
$sCount = count($aData);
Спустя 3 минуты, 41 секунда (6.12.2011 - 09:31) Семён написал(а):
В любом случае COUNT будет правильнее.
Спустя 9 часов, 55 минут, 24 секунды (6.12.2011 - 19:27) I++ написал(а):
SELECT * FROM places WHERE id_category='$iCategory'
Если id_category varchar, вместо int или даже tinyint, тоже будет медленнее.
id_category='$iCategory'
`id_category` = $iCategory
SELECT * FROM
SELECT row1, row2, row3 FROM `places`
Если id_category varchar, вместо int или даже tinyint, тоже будет медленнее.
`id_category` = $iCategory
SELECT row1, row2, row3 FROM `places`
Спустя 6 часов, 29 минут, 5 секунд (7.12.2011 - 01:56) vital написал(а):
А че, SQL_CALC_ROWS отменили? Нафига каунт?
Спустя 6 минут, 48 секунд (7.12.2011 - 02:03) caballero написал(а):
только count не со звездочкой а по полю с индексом