2017-10-20 2 views
0

데이터베이스에서 최근 5 ($ new) 항목을 선택하는 쿼리가 있습니다.마지막 N 개만 선택하면 쿼리가 모든 데이터를 처리합니까?

5 초마다 AJAX 요청으로이 쿼리를 실행하여 테이블을 업데이트 할 수 있습니다. 이 쿼리는 마지막 5 개의 레코드를 선택하지만 모든 레코드를 통해 쿼리를 실행 한 다음 마지막 5 개를 선택했는지 또는 모든 데이터를 확인하지 않고 마지막 5 개만 선택했는지 알고 싶습니다.

정말 지연이 있을지 걱정됩니다.

+0

답변은 테이블의 구조와 사용 가능한 인덱싱에 따라 다릅니다. 적절한 색인 생성이 가능하면 전체 테이블 스캔이 없어야합니다. 그것을 시도하고 너 자신을 위해보십시오. – dasblinkenlight

답변

1

당신은 충분히 빨리하기 위해 두 개의 인덱스가 필요합니다 : 당신도 두 번째로 OvenRunData.dataIdOvenRunData.data를 넣어, 또는 그러나 이러한 인덱스는 확실히 전체 데이터 스캔을 방지 clustered index 만들 수 있습니다

create index ix_OvenRuns_id on OvenRuns(id) 
create index ix_OvenRunData_ovenRunId on OvenRunData(ovenRunId) 

.

0

LIMITORDER BY 후에 적용되며, ORDER BY 전체 결과 집합에 적용된다. 따라서 귀하의 질문에 대한 대답은 예 : LIMIT을 적용하기 전에 귀하의 WHERE 조항에 의해 결정된 결과 집합의 모든 레코드를 거쳐야한다는 것입니다.