2015-06-08 2 views
2

У меня есть 2 запроса для извлечения faultCount и responseCount следующим образом, и он отлично работает.Объедините два запроса в Oracle

select count(*) as faultCount, 
     COMP_IDENTIFIER 
from CORDYS_NCB_LOG 
where AUDIT_CONTEXT='FAULT' 
group by COMP_IDENTIFIER 
order by responseCount; 

select count(*) as responseCount, 
     COMP_IDENTIFIER 
from CORDYS_NCB_LOG 
where AUDIT_CONTEXT='RESPONSE' 
group by COMP_IDENTIFIER 
order by responseCount; 

Мне нужно зарегистрироваться, чтобы получить столбцы так: COMP_IDENTIFIER,faultCount,responseCount. Следующий запрос выполняет задание. Но это займет много времени (> 16 секунд).

select count(case AUDIT_CONTEXT when 'FAULT' then 1 end) as faultCount, 
     count(case AUDIT_CONTEXT when 'RESPONSE' then 1 end) as responseCount, 
     COMP_IDENTIFIER 
from CORDYS_NCB_LOG 
group by COMP_IDENTIFIER 
order by responseCount; 

Я ищу простой и быстрый запрос. Заранее спасибо.

+1

Обычно вы должны сделать заказ, указав колонку, которая была проиндексирована. Кроме того, в зависимости от размера вашей базы данных вы проверяете каждую строку для «RESPONSE», поэтому попробуйте сделать запрос в столбце, который вы проиндексировали. Также, если возможно, сначала не начинайте поиск строки. Скорее попробуйте и сократите таблицу базы данных по каким-либо другим критериям, а затем выполните поиск строки на меньшем подмножестве. – Rash

+0

Я думаю, вы должны удалить тег mysql. – RubahMalam

ответ

3

Одной из возможных причин этого занимает больше времени является то, что вы читаете все строки в CORDYS_NCB_LOG даже там, где AUDIT_CONTEXT не FAULT или RESPONSE, которые являются только те строки, вы заинтересованы в.

Вы можете добавить это WHERE Ваш существующий запрос:

select count(case AUDIT_CONTEXT when 'FAULT' then 1 end) as faultCount, 
     count(case AUDIT_CONTEXT when 'RESPONSE' then 1 end) as responseCount, 
     COMP_IDENTIFIER 
from CORDYS_NCB_LOG 
where AUDIT_CONTEXT in ('FAULT', 'RESPONSE') 
group by COMP_IDENTIFIER 
order by responseCount; 
Смежные вопросы