Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Объединение результатов агрегатных выборок / 16 сообщений из 16, страница 1 из 1
21.06.2005, 08:46
    #33125800
Patriot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
Собственно вопрос в следующем :
Есть две таблицы с абсолютно разной структурой,
как получить количество записей этих двух таблиц попрусту говоря оъденить эти два запроса :

Код: plaintext
1.
Select count(*) FROM A

Код: plaintext
1.
Select count(*) FROM B

Заранее спасибо !
...
Рейтинг: 0 / 0
21.06.2005, 10:56
    #33126139
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
Возможно так:
Код: plaintext
1.
2.
3.
select a.a_count+b.b_count total
from (select count(*) a_count from a_1) a,
	(select count(*) b_count from b_1) b
...
Рейтинг: 0 / 0
21.06.2005, 10:58
    #33126143
Patriot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
BerkutВозможно так:
Код: plaintext
1.
2.
3.
select a.a_count+b.b_count total
from (select count(*) a_count from a_1) a,
	(select count(*) b_count from b_1) b


Спасибо !
...
Рейтинг: 0 / 0
21.06.2005, 11:01
    #33126162
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
Или (если версия>=4.1)
Код: plaintext
SELECT (SELECT COUNT(*) FROM A)+(SELECT COUNT(*) FROM B)
...
Рейтинг: 0 / 0
21.06.2005, 11:04
    #33126171
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
см. также SHOW TABLE STATUS
...
Рейтинг: 0 / 0
21.06.2005, 11:06
    #33126178
Patriot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
Версия 4.0.18-standard ... Ни тот ни другой запрос не робит к сожалению ...

P.S. Не для себя спрашиваю ... сам с FireBird-ом работаю поэтому не знаю что там поддерживается ...
...
Рейтинг: 0 / 0
21.06.2005, 11:10
    #33126190
Nir0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
это надо мне. запросы в самом деле не пашут. SHOW TABLE STATUS - вещь хорошая, пока нет никаких дополнительных условий...
...
Рейтинг: 0 / 0
21.06.2005, 11:10
    #33126194
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
PatriotВерсия 4.0.18-standard ... Ни тот ни другой запрос не робит к сожалению ...


Тогда одним числом никак.
М.б. устроит UNION.
...
Рейтинг: 0 / 0
21.06.2005, 11:34
    #33126266
Nir0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
Johnmen PatriotВерсия 4.0.18-standard ... Ни тот ни другой запрос не робит к сожалению ...


Тогда одним числом никак.
М.б. устроит UNION.
да не помру... буду юзать атомарные запросы. к тому-же mysql очень плохо держит кросс-табличные выборки... даже замечал потери в скорости при переходе на них. интересно просто стало, возможно ли вообще такое реализовать?
...
Рейтинг: 0 / 0
21.06.2005, 11:42
    #33126301
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
Очень плохо держит кросстабличные запросы?? нуканукапоподробнее с этого места..
...
Рейтинг: 0 / 0
21.06.2005, 12:48
    #33126477
Nir0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
ХренОчень плохо держит кросстабличные запросы?? нуканукапоподробнее с этого места..у меня было две таблички. в одной хранились фотографии (id, имя пользователя и т.д.), в другой комментарии к фотам. при выводе фоток я выводил и количество комментариев делая в цикле:
$r=mysql_query('select * from photos where ok=1 limit 0,10');
for ($i=0;$i<mysql_num_rows($r);$i++)
{
$row=mysql_fetch_array($r);
$r1=sql('select count(*) from votes where idp='.$row[id]);
...вывод фотки...
}
потом, когда записей стало много, скорость генерации страницы упала до 2 десятых секунды... естесственно, я попытался найти решение, и сделал кросс-табличную выборку. добавилась еще пара сотых секунды :(
админ сервера сказал мне, что mysql никогда нормально джоины не держала... так-же как апдэйты и инсерты... здесь постгре выигрывает в скорости, в отличие от атомарных селектов, где майскуля шустрее... в общем, админ мне посоветовал записать эти данные в photos, что я и сделал... скорость увеличилась раз в 10 :) вот такая история. а еще я читал в майскулёвом мануале, что джоины действительно медленны...
...
Рейтинг: 0 / 0
21.06.2005, 14:02
    #33126698
trijin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
Я правильно понял?
Вот этот скрипт
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
$r=mysql_query('select * from photos where ok=1 limit 0,10');
for ($i= 0 ;$i<mysql_num_rows($r);$i++)
{
$row=mysql_fetch_array($r);
$r1=sql('select count(*) from votes where idp='.$row[id]);
...вывод фотки...
}
работает быстрее чем?
Код: plaintext
1.
2.
3.
4.
5.
6.
$r=mysql_query("SELECT p.*, count(v.id) as cnt  
FROM photos p LEFT OUTER JOIN votes v ON p.id=v.idp 
WHERE p.ok=1 GROUP by p.id limit 0,10");
while($row=mysql_fetch_array($r));{
...вывод фотки...
}
???
...
Рейтинг: 0 / 0
22.06.2005, 08:57
    #33128046
Welly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
Nir0потом, когда записей стало много, скорость генерации страницы упала до 2 десятых секунды...
Индексы строить не пробовали?

админ сервера сказал мне, что mysql никогда нормально джоины не держала...
При правильном проектировании все работает нормально.

в общем, админ мне посоветовал записать эти данные в photos, что я и сделал... скорость увеличилась раз в 10
Логично - селект по одной таблице, без дергания по одной записи и без JOIN по неиндексированным полях(?).
...
Рейтинг: 0 / 0
22.06.2005, 12:52
    #33128673
Nir0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
trijinЯ правильно понял?
Вот этот скрипт
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
$r=mysql_query('select * from photos where ok=1 limit 0,10');
for ($i= 0 ;$i<mysql_num_rows($r);$i++)
{
$row=mysql_fetch_array($r);
$r1=sql('select count(*) from votes where idp='.$row[id]);
...вывод фотки...
}
работает быстрее чем?
Код: plaintext
1.
2.
3.
4.
5.
6.
$r=mysql_query("SELECT p.*, count(v.id) as cnt  
FROM photos p LEFT OUTER JOIN votes v ON p.id=v.idp 
WHERE p.ok=1 GROUP by p.id limit 0,10");
while($row=mysql_fetch_array($r));{
...вывод фотки...
}
???большой разницы я между ними не увидел... скорость замерял раз по пять, так что возможность погрешности довольно мала...
...
Рейтинг: 0 / 0
22.06.2005, 12:57
    #33128686
Nir0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
Welly Nir0потом, когда записей стало много, скорость генерации страницы упала до 2 десятых секунды...
Индексы строить не пробовали?

админ сервера сказал мне, что mysql никогда нормально джоины не держала...
При правильном проектировании все работает нормально.

в общем, админ мне посоветовал записать эти данные в photos, что я и сделал... скорость увеличилась раз в 10
Логично - селект по одной таблице, без дергания по одной записи и без JOIN по неиндексированным полях(?).индексировать пробовал... скорость увеличилась, что не могло не радовать, но очень мало. на 5-10%... оптимальным оказался именно последний вариант.
...
Рейтинг: 0 / 0
22.06.2005, 13:01
    #33128691
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение результатов агрегатных выборок
что explain то показывал?
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Объединение результатов агрегатных выборок / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]