|
|
|
| Есть таблица (id, post_id, cat_id) = айди связи - айди поста - айди категории (в которой этот пост лежит).
Как оптимально подсчитать (за один запрос) количество статей в каждой из категории? (кстати нужно в sqlite, но думаю в mysql делается аналогично)
Заранее спасибо :) | |
|
|
|
|
|
|
|
для: kulibko
(11.12.2007 в 00:35)
| | о, похоже это "SELECT *, COUNT(*) from $table_post_to_category GROUP BY cat_id" то что нужно | |
|
|
|
|
|
|
|
для: kulibko
(11.12.2007 в 00:40)
| | За SELECT * ...GROUP BY нужно расстреливать. Деревянными пулями. | |
|
|
|
|
|
|
|
для: Trianon
(11.12.2007 в 00:42)
| | Объясните пожалуйста почему.
Проверил быстродействие - (*, count(*)) запрос выполнялся 0.0003 секунды, а (cat_id, count(*)) - 0.0002 секунды. | |
|
|
|
|
|
|
|
|
для: Trianon
(11.12.2007 в 01:20)
| | Спасибо :) | |
|
|
|
|
|
|
|
для: kulibko
(11.12.2007 в 00:35)
| |
SELECT cat_id, COUNT(cat_id) AS cnt
FROM link_table
GROUP BY cat_id
|
Есть ли в sqlite GROUP BY - выясняйте сами :) | |
|
|
|
|
|
|
|
для: Trianon
(11.12.2007 в 00:41)
| | я через pdo работаю, там есть :) | |
|
|
|
|
|
|
|
для: kulibko
(11.12.2007 в 00:35)
| | Для этого удобно воспользоваться запросом
SELECT cat_id, COUNT(*) FROM tbl
GROUP BY cat_id
|
| |
|
|
|
|
|
|
|
для: cheops
(11.12.2007 в 00:43)
| | А расскажите пожалуйста еще такое:
Есть таблица $table_posts с постами (сейчас там около 5000 записей)
Почему же "SELECT count(*) from $table_posts" исполняется целых 0.3-0.5 секунды?
(в прошлом примере в таблице связей было тоже около 5000 связей) | |
|
|
|
|
|
|
|
для: kulibko
(11.12.2007 в 01:13)
| | первичный ключ у таблицы есть?
попробуйте SELECT COUNT(первичный_ключ) FROM $table_posts замерить. | |
|
|
|
|
|
|
|
для: Trianon
(11.12.2007 в 01:24)
| | Первичный ключ есть, пробовал - та же скорость.
SELECT id from $table_posts = 0.0002 секунды
SELECT COUNT(id) from $table_posts = 0.2 с.
Еще интересно:
SELECT id, count(id) from $table_posts GROUP BY id = 0.0002 секунды
SELECT id, count(id) from b_1_posts = за 0.2 секунды... | |
|
|
|
|
|
|
|
для: kulibko
(11.12.2007 в 01:30)
| | У Вас за этой переменной $table_posts одна таблица скрывается или JOIN-соединение?
потому что странный какой-то результат....
>SELECT id, count(id) from b_1_posts = за 0.2 секунды...
нет... всё же придется расстрелять... | |
|
|
|
|
|
|
|
для: Trianon
(11.12.2007 в 01:44)
| | Только одна таблица...
Да, результат и мне кажется странным :)
"Не стреляй в воробьев..." | |
|
|
|