2010-03-29 6 views

답변

6

쿼리 속도에 많은 요소가 있으며, 그 중 하나는 행 수입니다.

다른 사람은 다음과 같습니다

  • 인덱스 전략 (만약 당신이 인덱스 컬럼 "X", 당신이 색인되어 있지 않은 경우보다 더 나은 성능을 볼 수 있습니다)
  • 서버 부하
  • 데이터 캐싱 - 당신은했습니다 일단 쿼리를 실행하면 데이터가 데이터 캐시에 추가됩니다. 따라서 데이터가 디스크가 아닌 메모리에서 오는만큼 후속 재실행이 훨씬 빠릅니다. 캐시에서 데이터가 제거 될 때까지
  • 실행 계획 캐싱 - 어느 정도까지. 쿼리가 처음 실행되면 SQL Server 실행 계획은 나중에 실행될 수 있도록 일정 기간 동안 캐시됩니다.
  • 서버 하드웨어
  • 당신이 쿼리를 작성한 방식 (종종 성능 저하에 가장 큰 경쟁자 중 하나임). 예 : 테이블의 행 수가 많은 데이터베이스의 경우 집합 기반 작업

대신 커서를 사용하여 뭔가를 쓰고, 파티션은 일반적으로 이후 SQL 서버 2005 고려해야 할 무언가 (이다, Enterprise 버전은이 내장되어 지원). 이것은 데이터를 더 작은 단위로 분할하는 것입니다. 일반적으로 작은 단위 = 작은 테이블 = 작은 인덱스 = 더 나은 성능.

1

거의 항상 그렇습니다. 진짜 질문은 : 테이블 크기가 커짐에 따라 쿼리가 느려지는 속도는 얼마입니까? 그리고 답은 다음과 같습니다. r.x가 인덱싱되면 그리 많지 않으며, 그렇지 않은 경우 많은 양이 인덱스됩니다.

1

행 (특정 정도까지) 그 자체가 아니지만 데이터 (열)의 양은 쿼리를 느리게 만들 수 있습니다. 또한 데이터는 백엔드에서 프론트 엔드로 전송되어야합니다.

3

예, 매우 중요 할 수 있습니다.

1 억 개의 행이있는 경우 SQL 서버는 각 행을 거쳐 일치하는지 확인해야합니다. 10 개의 행이있는 것과 비교하면 시간이 많이 걸립니다.

'x'열에 인덱스가 필요합니다.이 경우 SQL Server는 모든 행을 거치지 않고 인덱스를 확인할 수 있습니다. SQL Server가 모든 항목을 검사 할 필요가 없으므로 훨씬 빨라질 수 있습니다 인덱스의 값

반면에 x = 5와 일치하는 행 수가 1 억 개가되면 10 개 행보다 느립니다.

1

답변은 예입니다. 그러나 유일한 요인은 아닙니다. 당신은 적절한 최적화 및 홈페이지 성능 무시할 수있을 것입니다 성능 저하를 조정하는 요인을 한 경우에

  • 인덱싱 클러스터 또는 없음
  • 데이터 캐싱
  • 테이블 파티셔닝
  • 실행 계획 캐싱
  • 데이터 분배를 클러스터 없다
  • 하드웨어 사양

다른 요인이 있지만 주로 고려됩니다. 스키마를 디자인 한 방법조차도 성능에 영향을줍니다.

1

쿼리는 항상 행 수에 따라 달라지는 것으로 가정해야합니다. 사실 최악의 경우 (제공된 예제의 경우 선형 또는 O(N))를 가정해야하며 더 복잡한 쿼리의 경우 지수가되어야합니다. 최악의 상황을 피하는 데 도움이되는 트릭으로 가득 찬 데이터베이스 관련 매뉴얼이 있지만 SQL 자체는 언어이며 쿼리 실행 방법을 지정하지 않습니다. 대신 데이터베이스 구현은 주어진 쿼리를 실행하는 방법을 결정합니다. 데이터베이스의 열 또는 열 집합을 인덱싱 한 경우 간단한 조회를 위해 O(log(N)) 성능을 얻습니다. 시스템에 효과적인 쿼리 캐시가있는 경우 O(1) 응답을받을 수 있습니다. 다음은 좋은 소개 기사입니다. High scalability: SQL and computational complexity

관련 문제