절대적으로 더 이상 사용할 수 없을 때까지 한 번에 하나씩 저장하고 특정 문제를 해결할 다른 것을 디자인하십시오.
SQL은 "X와 일치하는 모든 레코드 제공"이라는 의미의 선언적 언어이므로 db 서버에 을 알려주는 방법이 없습니다.에는이 방법이 적용됩니다. 결과적으로 수억 개의 레코드가있는 경우에도 db 서버가 신속하게이 작업을 수행 할 수 있도록하는 많은 방법이 있습니다. 또한 RDBMS는 수년 간의 경험을 통해이 문제에 맞게 최적화되어 있으므로 PostgreSQL과 같은 시스템을 능가하지는 못할 것입니다.
그래서 조기 최적화는 모든 악의 근원입니다.
그래서 PostgreSQL이 결과를 얻기 위해 테이블을 통과하는 두 가지 방법을 살펴 보겠습니다.
첫 번째 스캔은 일련의 페이지를 반복하고 각 페이지에서 값을 스캔 한 다음 레코드를 사용자에게 반환합니다. 매우 작은 테이블의 경우 다른 방법보다 효과적입니다. 큰 테이블에서는 느립니다. 복잡성은 O (n)입니다. 여기서 n은 테이블의 크기이며, 레코드 수에 제한이 없습니다.
그래서 두 번째 접근법은 인덱스 스캔 일 수 있습니다. 여기에서 PostgreSQL은 b-tree 인덱스에서 일련의 페이지를 가로 질러 레코드를 찾습니다. 복잡성은 각 레코드를 찾기 위해 O (log (n))입니다.
내부적으로 PostgreSQL은 페이지를 고정 크기로 배치로 저장합니다. 이미이 문제를 해결합니다. 동일한 작업을 수행하려고하면 일괄 처리 된 레코드 일괄 처리가 수행됩니다.이 일괄 처리는 일반적으로 나쁜 작업의 처방입니다.
나는 당신이 무엇을 요구하고 있는지 잘 모르겠습니다. 왜 항목을 반복할까요? 데이터베이스는 검색 할 때 훌륭합니다. –
@DanielRoseman하지만 확실하게 동일한 작업을 몇 번씩하는 것은 나쁜 생각입니까? – techydesigner
* 어떤 * 작업이 필요합니까? –