데이터베이스에서 최근 5 ($ new) 항목을 선택하는 쿼리가 있습니다.마지막 N 개만 선택하면 쿼리가 모든 데이터를 처리합니까?
5 초마다 AJAX 요청으로이 쿼리를 실행하여 테이블을 업데이트 할 수 있습니다. 이 쿼리는 마지막 5 개의 레코드를 선택하지만 모든 레코드를 통해 쿼리를 실행 한 다음 마지막 5 개를 선택했는지 또는 모든 데이터를 확인하지 않고 마지막 5 개만 선택했는지 알고 싶습니다.
정말 지연이 있을지 걱정됩니다.
데이터베이스에서 최근 5 ($ new) 항목을 선택하는 쿼리가 있습니다.마지막 N 개만 선택하면 쿼리가 모든 데이터를 처리합니까?
5 초마다 AJAX 요청으로이 쿼리를 실행하여 테이블을 업데이트 할 수 있습니다. 이 쿼리는 마지막 5 개의 레코드를 선택하지만 모든 레코드를 통해 쿼리를 실행 한 다음 마지막 5 개를 선택했는지 또는 모든 데이터를 확인하지 않고 마지막 5 개만 선택했는지 알고 싶습니다.
정말 지연이 있을지 걱정됩니다.
당신은 충분히 빨리하기 위해 두 개의 인덱스가 필요합니다 : 당신도 두 번째로 OvenRunData.dataId
OvenRunData.data
를 넣어, 또는 그러나 이러한 인덱스는 확실히 전체 데이터 스캔을 방지 clustered index 만들 수 있습니다
create index ix_OvenRuns_id on OvenRuns(id)
create index ix_OvenRunData_ovenRunId on OvenRunData(ovenRunId)
.
이는 색인에 따라 다릅니다.
귀하의 경우에는 OverRuns(id)
에 하나 있어야합니다. 여기
더 : http://use-the-index-luke.com/sql/partial-results/top-n-queries
LIMIT
가 ORDER BY
후에 적용되며, ORDER BY
전체 결과 집합에 적용된다. 따라서 귀하의 질문에 대한 대답은 예 : LIMIT
을 적용하기 전에 귀하의 WHERE
조항에 의해 결정된 결과 집합의 모든 레코드를 거쳐야한다는 것입니다.
답변은 테이블의 구조와 사용 가능한 인덱싱에 따라 다릅니다. 적절한 색인 생성이 가능하면 전체 테이블 스캔이 없어야합니다. 그것을 시도하고 너 자신을 위해보십시오. – dasblinkenlight