내가 가지고 있는 Oracle SQL 문을 큰 문제. I want to select the TOP 10 기록, t # 39 에서 발주한 STORAGE_DB aren& 목록에 있는 다른 select 문은.
이 번호요 작동합니다 모든 기록을 세웠다.
SELECT DISTINCT
APP_ID,
NAME,
STORAGE_GB,
HISTORY_CREATED,
TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE
FROM HISTORY WHERE
STORAGE_GB IS NOT NULL AND
APP_ID NOT IN (SELECT APP_ID
FROM HISTORY
WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') = '06.02.2009')
그러나 나는 추가
AND ROWNUM <= 10
ORDER BY STORAGE_GB DESC
누가 가지고 좋은 솔루션? 다른 문제. 정말 이 질의입니다 느린 (10k+ 레코드)
SELECT * FROM (
SELECT DISTINCT
APP_ID,
NAME,
STORAGE_GB,
HISTORY_CREATED,
TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE
FROM HISTORY WHERE
STORAGE_GB IS NOT NULL AND
APP_ID NOT IN (SELECT APP_ID FROM HISTORY WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') ='06.02.2009')
ORDER BY STORAGE_GB DESC )
WHERE ROWNUM <= 10
라운럼 oralce qic 결과 후 br> returned.<; 그 후 필요한 필터링하려면 가 반환되었는지 하므로, 서브케리 필요합니다. 랭크 () 함수를 사용할 수도 있습니다 상단형 n 결과를 얻을 수 있습니다. < br> < br>;;; "Not 존재하지 않는다 '' 대신 '성능 향상을 위해 사용해 보십시오. [이] [3] 지켜보리니 intel. com/performance/mobile/benchmarks.
[3]: http://www.4tm.com.ar/4tmsite/wordpress/? p = 25
Oracle 을 사용할 경우 탄소-12 사용합니다.
>. N 행뿐만 페치할 다음영업일 미디어만을
SELECT DISTINCT
APP_ID,
NAME,
STORAGE_GB,
HISTORY_CREATED,
TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE
FROM HISTORY WHERE
STORAGE_GB IS NOT NULL AND
APP_ID NOT IN (SELECT APP_ID FROM HISTORY WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') ='06.02.2009')
ORDER BY STORAGE_GB DESC
FETCH NEXT 10 ROWS ONLY
추가 정보: http://docs.oracle.com/javadb/10.5.3.0/ref/rrefsqljoffsetfetch.html
이와 관련해 성능이 저하될 수 있는지, 정말 많은 것을 할 수 있다는 것 하나 빼놓을 수 없는 별개의 문제다. 그러나 명백하네 심아이엔큐 있어 한 가지 문제가 될 수 있다.
WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') = '06.02.2009')
그럼 이건 정말 열 경우 날짜를 HISTORY_DATE 색인 있으면 더 재작성할 수행하게 된다.
WHERE HISTORY_DATE = TO_DATE ('06.02.2009', 'DD.MM.YYYY')
데이터 형식 변환 비활성화합니다 B-Tree 인덱스 사용하지 않기 때문이다.
라운럼 전에 적용되며 ORDER BY 무순서 설정되었습니다 확보하십시오 때문에 한 것으로 알려졌다. 따라서, 10 행 및 신규인지 them.0 쿼리하지 는 첫 번째 톱 10 에서 해석함수 콩지름에 선택할 수 있는 월급을 서브케리 관심용 있는 필터:
select * from
(select empno,
ename,
sal,
row_number() over(order by sal desc nulls last) rnm
from emp)
where rnm<=10