![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
[Oracle ]Count records [D7]
McSimm2 © (2003-07-09 11:34:00)Есть 2 таблицы. Как посчитать общее число записей в таблицах ?
Делаю вот так :
SELECT SUM ( QUERY.sum1 + QUERY.sum2) as AllSum
FROM (SELECT 0 AS sum1, COUNT (*) AS sum2
FROM (SELECT DISTINCT ulica, dom, kvart
FROM table1)
UNION
SELECT COUNT (*) AS sum1, 0 AS sum2
FROM (SELECT DISTINCT ulica, dom, kvart
FROM table2)) QUERY
Может как нить покороче можно ???
DenK_vrtz (2003-07-09 15:06:00) [1]McSimm2 (09.07.03 15:01), блин клинтон, вот с этого и надо было начинать!!!
McSimm2 (2003-07-09 15:01:00) [2]DenK_vrtz © (09.07.03 14:52)
Да ладно не может такого быть. Если в первом стоит distinct, а между первым и вторым и вторым и третьим union all - то как же они появятся!
К тому же я свою ошибку уже осознал - совокупность n_lc+jeu+rajon
даёт уникальность для записи, так что distinct мне как корове седло был нужен. Во всей каше из 3 таблиц - каждая запись уникальна!
DenK_vrtz (2003-07-09 15:00:00) [3]McSimm2, я занл, что будет долгоработать DenK_vrtz © (09.07.03 14:44), но интересно было на сколько :-)
а в McSimm2 (09.07.03 14:21) повторение строк будет обязательно!
McSimm2 (2003-07-09 14:57:00) [4]Johnmen © (09.07.03 14:50)
Что то не понял чего я там где переврал ? :)
DenK_vrtz (2003-07-09 14:52:00) [5]McSimm2 (09.07.03 14:48), а в нем будут повторяющиеся стоки, поверь! :-)
Johnmen (2003-07-09 14:50:00) [6]>McSimm2 (09.07.03 14:40)
>надо получить общее колич.неповторяющихся в трех таблицах
Johnmen © (09.07.03 13:54)
И не надо перевирать текст приводимых запросов...
:)
McSimm2 (2003-07-09 14:48:00) [7]DenK_vrtz © (09.07.03 14:44)
Полторы минуты отрабатывал 1.36 сек
Самый быстрый остаётся
McSimm2 (09.07.03 14:21)
150 милисекунд
DenK_vrtz (2003-07-09 14:44:00) [8]SELECT count(*) FROM
(SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM (SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_ved
UNION all
SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_chs
UNION all
SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm)
group by ulica, dom, kvart, n_lc, rajon, jeu)
еще вариант!
McSimm2 (2003-07-09 14:40:00) [9]надо получить общее колич.неповторяющихся в трех таблицах
DenK_vrtz (2003-07-09 14:34:00) [10]McSimm2 (09.07.03 14:30), еще бы скорость не увеличилась.
union выкидывает повторяющиеся строки, а union all кидает все в одну кучу!
Johnmen (2003-07-09 14:32:00) [11]Один принципиальный момент -
#надо отдельно получить колич.неповторяющихся для трех таблиц и потом их сложить, или
#надо получить общее колич.неповторяющихся в трех таблицах
?
McSimm2 (2003-07-09 14:30:00) [12]DenK_vrtz © (09.07.03 14:24)
Ты чего кричишь ???
Union без distinct работает горааздо дольше нежели
union all без того же distinct.
Зачем distinct писать если выяснилось что он повторяющиеся строки выкинет?
В первом запросе его оставляю в 2 других выкидываю, но скорость выполнения не меняется, вот если ещё и union на union all полменять то скорость увеличивается
DenK_vrtz (2003-07-09 14:24:00) [13]А Johnmen © как раз прав!!!
McSimm2 (09.07.03 14:21), млин, а где же ВАЖНЫЙ DISTINCT?
Замени ты union all на union!
McSimm2 (2003-07-09 14:21:00) [14]Нет
Johnmen © (09.07.03 14:16)
ты не прав !!!
Запрос
SELECT COUNT (*)
FROM (SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_ved
UNION all
SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_chs
UNION all
SELECT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm)
отработал 150 милисекунд !!
Спасибо всем - из запроса выжато всё что можно !!!
Johnmen (2003-07-09 14:16:00) [15]>McSimm2 (09.07.03 14:08)
М-да... По-моему ты уже глумишься...:[
McSimm2 (2003-07-09 14:16:00) [16]Млин, действительно - ща попробую !
DenK_vrtz (2003-07-09 14:14:00) [17]McSimm2 (09.07.03 14:08), так не надо во втором запросе DISTINCT писать, так как union выкинет повторяющиеся строки!
McSimm2 (2003-07-09 14:08:00) [18]
SELECT COUNT (*)
FROM (SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_ved
UNION ALL
SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_chs
UNION ALL
SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm)
33 секунды
SELECT COUNT (*)
FROM (SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_ved
UNION
SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_chs
UNION
SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm)
36 секунд
Johnmen (2003-07-09 13:54:00) [19]>McSimm2 (09.07.03 13:51)
Ты не понял...См. DenK_vrtz © (09.07.03 11:43), но так :
selct count(*) from
(
SELECT ulica, dom, kvart FROM table1
union
SELECT ulica, dom, kvart FROM table2)
McSimm2 (2003-07-09 13:54:00) [20]Точнее "Групповая функция НЕявляется одногруппной" :)