2014-06-05 3 views
0

나는 약 9 천만 개의 레코드가있는 매우 큰 오라클 데이터베이스 작업을하고 있습니다. 저는 UI 목적을 위해 최근 100 개의 레코드를 얻고 싶었습니다. 나는 최근 레코드를 얻을 수 있지만 처리를 위해 약 20-25 민트가 걸리지 만 스키마의 날짜 열에 order by 절을 사용하여이 작업을 수행하려고했습니다.오라클의 매우 큰 데이터베이스에서 최근 N 개의 레코드 가져 오기

예. 스키마

message_id varchar2, 
message_head varchar2, 
message_body varchar2, 
---------- 
---------- 
message_date date 

최근 메시지를 정렬하기 위해 message_date를 사용하고있었습니다.

더 적은 시간에 최신 300 개의 메시지를 제공 할 수 있도록 도와주세요 (1 분 미만으로 말하십시오) 그리고 페이스 북과 트위터 같은 큰 데이터 중심 회사가 최신 게시물과 트윗을 관리하는 방법에 대해 궁금합니다. 초. 사전

답변

1

1)) 2 MESSAGE_DATE
에 인덱스를 생성하여 해당 열을

참고를 사용하여 마지막 X 기록을 순서 열을 추가 (즉 또한 색인) 및 검색에

당신 덕분 경우 마지막 X 레코드가 항상 바뀌고있는 '라이브'데이터베이스에서 작업하고 있습니다. FIRST N 행에 대한

+0

답장을 보내 주셔서 감사합니다. 나는 라이브 데이터베이스에서 일하고있다. 사실 나는 가장 최근의 메시지가 message_date에 달려 있기를 원했습니다. 시퀀스 번호를 사용하면 특정 시간 후에 추가 된 최근 레코드가 어떻게됩니까? 조금 더 정교하게 주시겠습니까? – Tony

+0

시퀀스는 항상 가장 최근의 X 레코드를 반환하므로 라이브 DB에서 가장 최근의 것을 얻을 수 있으며 특정 (재실행 : re : time) 능력을 상실합니다. 검색 기준으로 날짜를 사용하면 (마지막 날짜의 X는 특정 날짜 값에서 거꾸로 기록됩니다) 요청할 때 더욱 정확해질 수 있습니다. – KevinDTimm

+0

고마워, 나는 그것을 해결할 것입니다. – Tony

0

또 다른 방법, 또는 어쩌면 보완 ...

사용 최적화 모드 힌트. 그러면 옵티마이 저가 첫 번째 레코드를 빠르게 검색하도록 최적화합니다.

SELECT/* + FIRST_ROWS (10) */employee_id, last_name, salary, job_id FROM 직원 WHERE department_id = 20;

은 10 개의 첫 번째 행 검색에 최적화됩니다. 100을해야합니다.

관련 문제