2014-04-14 2 views
-2

이것은 개념적인 질문입니다.간단한 select 쿼리의 곡선은 무엇입니까?

가끔씩, 테이블에 1 백만 개의 레코드가있는 table_name을 선택하면 약 3 초가 걸립니다.

마찬가지로 1,000 만 레코드를 선택할 때 소요되는 시간은 약 30 초입니다. 그러나 나는 기록의 선택이 시간에 선형 적으로 비례하지 않는다고 말한다. 특정 숫자 후에 레코드를 선택하는 데 필요한 시간이 기하 급수적으로 증가합니까?

어떻게 작동하는지 이해해 주시겠습니까?

+2

누가 이것을 말 했나요? – OldProgrammer

+1

그 정보를 제공 한 사람으로부터 자세한 내용을 문의하십시오. 일반적으로 테이블에서 선택하는 것은 선형 시간 연산입니다. –

+0

백만 건 또는 십억 건의 기록이 사실입니까? 가능하면이 개념을 자세히 설명하는 기사 링크를 제공하십시오. – Sharktooth

답변

1

where 절 또는 조인이없는 단순한 select조차도 하나의 쿼리가 오래 걸릴 수 있습니다.

첫 번째로 쿼리를 반환하는 시간은 쿼리가 실행될 때 네트워크가 얼마나 사용 중인지에 따라 다릅니다. 또한 데이터에 대한 잠금 또는 사용 가능한 메모리의 양에 따라 달라질 수 있습니다.

또한 테이블의 너비와 일반적으로 개별 레코드의 몇 바이트에 달려 있는지에 따라 다릅니다. 예를 들어, 두 개의 열이 모두 int 인 1000 만 개의 레코드 테이블은 데이터베이스 객체 또는 큰 필드로 저장된 문서와 같은 경우 큰 열을 포함하여 50 개의 열이있는 백만 개의 레코드 테이블보다 훨씬 빨리 반환됩니다. 일반 varchar 또는 nvarchar 필드에 맞게 텍스트가 너무 많습니다 (SQL Server에서는 nvarchar (max) 또는 텍스트). 나는 비록 더 많은 기록이 있더라도 반환 할 수있는 총 데이터가 더 적기 때문에 이것이 기대된다.

where 절과 join을 추가하기 시작하면 개별 쿼리의 성능에 영향을 미치는 많은 것들이 있습니다. 데이터베이스를 쿼리하면 특정 데이터베이스의 성능 튜닝에 관한 좋은 책을 읽어야합니다. 필요 이상으로 쿼리가 더 느리게 실행될 수 있다는 것을 인식하지 못하면 할 수있는 많은 일이 있습니다. 공연자가 될 가능성이 가장 높은 쿼리를 만드는 기술을 배워야합니다.

1

나는 이것이 각 데이터베이스 서버마다 다르다고 생각한다. 쿼리를 실행하는 동안 성능을 모니터링하십시오 (메모리 및 CPU는 어떻게됩니까?)

결국 모든 하드웨어 구성 요소에는 병목 현상이 있습니다. 이 지점에 가까이 다가 서면 서버가 질식 할 수 있습니다.

관련 문제