Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация sql-запроса / 6 сообщений из 6, страница 1 из 1
04.08.2016, 11:30:03
    #39286058
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация sql-запроса
Доброго времени суток!
Как можно оптимизировать вот этот ужасный запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select count(*) from 
(
select   
 (select count(id) from table2 tab2
   where tab2.tabid = tab1.id
    and viewed = 1) 
   -    
    (select count(id) from table2 as tab2
   where tab2.tabid = tab1.id) as processed
 from table1 tab1 
 ) un 
 where processed =0
...
Рейтинг: 0 / 0
04.08.2016, 11:30:46
    #39286061
Philip_Stubborn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация sql-запроса
Вернее, как написать его проще и правильней?
...
Рейтинг: 0 / 0
04.08.2016, 12:06:17
    #39286110
p2.
p2.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация sql-запроса
Philip_Stubborn,

sum(count(*)) having
...
Рейтинг: 0 / 0
04.08.2016, 12:10:17
    #39286114
Оптимизация sql-запроса
Код: plsql
1.
2.
3.
4.
5.
6.
7.
select decode (count(tab2.viewed),0,0,1)
from table1 tab1, table2 tab2
where tab2.tabid = tab1.id
and not exists (select tab2.viewed
from table1 tab1, table2 tab2
where tab2.tabid = tab1.id
and tab2.viewed != 1)
...
Рейтинг: 0 / 0
04.08.2016, 12:38:35
    #39286150
heroin2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация sql-запроса
select count(*)
from table1 t1
where not exists(
select 1 from table2 t2 where t2.tabid=t1.id
and t2.viewed!=1
)
...
Рейтинг: 0 / 0
04.08.2016, 15:03:35
    #39286322
ora601
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация sql-запроса
Philip_StubbornДоброго времени суток!
Как можно оптимизировать вот этот ужасный запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select count(*) from 
(
select   
 (select count(id) from table2 tab2
   where tab2.tabid = tab1.id
    and viewed = 1) 
   -    
    (select count(id) from table2 as tab2
   where tab2.tabid = tab1.id) as processed
 from table1 tab1 
 ) un 
 where processed =0


Если все tab1.id есть в tab2, то обращение к table1 не нужно :
Код: plsql
1.
2.
3.
4.
5.
SELECT COUNT(*) FROM (
SELECT tabid  
FROM table2
GROUP BY tabid
HAVING count(CASE WHEN viewed=1 THEN 1 ELSE NULL END)=count(*))
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация sql-запроса / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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