sql이 java programming 'distinct'보다 빠른 경우
(오라클에서) 'distinct'를 사용하는 sql 쿼리가 있다면, non-distinct를 검색한 후 java 프로그래밍을 통해 고유한 결과를 얻는 것보다 빠를까요?
오라클 sql distinct가 무겁다고 어디선가 들었는데 자바 프로그래밍을 통한 수동 'distinction'보다 무겁나요?
고마워, 프란츠
데이터 처리 속도는 프로그래밍 언어보다 데이터베이스에서 더 빠릅니다.
그 이유는 데이터가 데이터베이스에서 이미 사용 가능하기 때문이며, 앱으로 이동하는 수고를 덜 수 있기 때문입니다.
- 데이터베이스에서 운전자에 대한 데이터를 마시링합니다.
- 네트워크 전송;
- 운전자에서 애플리케이션으로 데이터를 전송할 수 없습니다.
오라클의 경우DISTINCT무겁다는 것은, 그것이 의미할 수 있는 것은 결코 단순히 던지지 않는다는 것입니다.DISTINCT좋은 아이디어처럼 보인다는 이유만으로 질의에 참여할 수 있습니다. 성능에 심각한 영향을 미칠 수 있으므로 실제 데이터 세트로 프로파일링합니다.
두 가지 주요 측면:
- 데이터를 자바로 전송해야 한다면 전송에 드는 모든 부담이 있습니다.데이터베이스에서 작업을 수행하면 필요 없는 데이터를 전송할 필요가 없습니다.
- 데이터베이스는 인덱스, 캐시 등을 사용하여 작업 속도를 높일 수 있습니다.
모든 데이터를 가져온 다음 Java에서 별도의 작업을 수행하는 것이 데이터베이스에서 수행하는 것보다 더 빠르다는 사실을 알게 되어 매우 놀랐습니다.
응용프로그램이 데이터베이스보다 더 빨리 실행할 수 있는 경우 데이터베이스가 심각하게 손상됩니다(애플리케이션이 상당히 빠른 컴퓨터에서 실행되는 경우는 제외).물론 데이터베이스는 (중복을 제거하기 위해 해시 테이블을 정렬하거나 사용하는) 어떤 작업을 해야 하지만, 여러분의 애플리케이션도 마찬가지입니다!
데이터베이스가 잘 할 수 있는 작업을 애플리케이션에서 수행하는 것은 거의 항상 잘못된 것입니다.
일반 규칙: 데이터베이스가 데이터베이스의 작업을 수행하도록 합니다. 즉, 메모리, 네트워크, CPU를 저장하는 것입니다.이러한 자원의 대부분은 데이터베이스 측면에서도 사용될 것입니다. 하지만 생산에 들어가기 전에 대규모 최적화 작업이 이루어졌으므로, 어머니에게 아기를...
동물들이 여전히 아타리에서 이야기하고 게임을 하던 시절, 불필요한 네트워크 트래픽을 만드는 것은 나쁜 일이었습니다.
필요한 것보다 더 많은 데이터를 얻는 것은 단순히 이루어지지 않았습니다.제가 모든 데이터를 얻고 자바로 조작하여 다른 값을 얻을 수 있는 유일한 이유는 다른 데이터가 필요할 때입니다.그래서 그걸 잡기 위해서.
참고: 이는 서버에서 모든 작업을 수행한다는 것과 동일하지 않습니다. 데이터 조작을 더 많이 지원하는 환경에서 데이터를 조작하는 것은 좋은 일이 될 수 있습니다.필요 이상의 데이터를 요구하지 않아도 됩니다(캐싱은 눈에 띄는 예외 사항임)
Oracle 9와 Oracle 10은 서로 다른 작업을 실행합니다. Oracle 9 유형, Oracle 10 해시입니다.몇 가지 경우에 따라 Java는 Oracle 9보다 빠르게 구별할 수 있지만 Oracle 10보다는 느리게 구별할 수 있습니다.
전반적인 Oracle은 이를 더 빠르게 수행할 수 있다고 생각합니다.존 스키트의 대답을 보세요.
오라클은 특히 이후 버전에서는 정렬 또는 해시를 포함하여 DISTINCT 연산을 구현하기 위해 여러 가지 방법을 선택할 수 있으며 다양한 방법(예: 인덱스 또는 전체 검색 사용)으로 테이블에 액세스할 수 있습니다.또한 통계 및 제약 조건을 포함한 데이터에 대한 더 많은 정보를 가지고 있으므로 자바 프로그램이 반드시 알지 못할 수도 있는 최적화를 찾는 데 도움이 될 수 있습니다.
이는 주요 문제와는 별개로, 주변에 전송되는 데이터의 양입니다(여기 있는 다른 사람들이 여러 번 언급한 바 있음)
메모리에서 데이터 조작은 보통 더 빠르지만,중복되는 것이 많다는 것을 알고 있다면 DB에서 구분하는 것이 좋습니다.그렇지 않으면 네트워크 대역폭과 메모리를 훨씬 더 많이 사용할 수 있습니다.따라서 실제로 데이터에 따라 다릅니다.
SQL distinct는 여러 번 발생하는 것을 제거해야 하기 때문에 "무거운(heavy.데이터를 먼저 정렬한 다음 요소가 동일한 런을 제거하면 이러한 작업을 수행할 수 있습니다.그 무거움은 이 작업을 수행하는 데 비용이 든다는 사실과 관련이 있습니다.
여기서 관용적인 해결책은 데이터베이스가 리프팅을 하도록 한 다음 문제가 발생할 경우 성능에 대해 걱정하는 것입니다.
언급URL : https://stackoverflow.com/questions/949761/when-is-sql-distinct-faster-than-java-programming-distinct
'programing' 카테고리의 다른 글
| 내 SQL 저장 지속 시간 - 데이터 유형? (0) | 2023.10.28 |
|---|---|
| C에서 좋은 오픈 소스 B-트리 구현은 무엇입니까? (0) | 2023.10.28 |
| 내 계정에 휴대폰 추가 > 우커머스 계정 편집 필드 (0) | 2023.10.28 |
| Internet Explorer(인터넷 익스플로러) 및 jQuery(jQuery)를 사용한 "사용 권한 거부" (0) | 2023.10.23 |
| 각도 JS 날짜 필터가 작동하지 않습니다. (0) | 2023.10.23 |