PostgreSQL의 효율적인 무작위 행 선택 방법
PostgreSQL은 임의의 행을 효율적으로 선택하기 위한 다양한 방법을 제공합니다.
방법 1: Random() 및 Limit 절 사용
이 방법은 random()
함수와 LIMIT
절을 사용합니다.
SELECT * FROM table ORDER BY random() LIMIT 1000;
그러나 큰 테이블의 경우 이 방법은 전체 테이블 스캔이 필요하므로 속도가 느려질 수 있습니다.
방법 2: 인덱스 기반 방법
이 방법은 기본 키 인덱스를 사용하여 쿼리를 최적화합니다.
WITH params AS ( SELECT 1 AS min_id, -- 最小ID (大于等于当前最小ID) , 5100000 AS id_span -- 四舍五入 (max_id - min_id + 缓冲) ) SELECT * FROM ( SELECT p.min_id + trunc(random() * p.id_span)::integer AS id FROM params p , generate_series(1, 1100) g -- 1000 + 缓冲 GROUP BY 1 -- 去除重复项 ) r JOIN table USING (id) LIMIT 1000; -- 去除多余项
이 방법은 전체 테이블 스캔 대신 인덱스 스캔을 사용하기 때문에 첫 번째 방법보다 빠릅니다.
방법 3: 재귀적 CTE 사용
이 방법은 재귀 공통 테이블 표현식(CTE)을 사용하여 ID 열의 누락된 값을 처리합니다.
WITH RECURSIVE random_pick AS ( SELECT * FROM ( SELECT 1 + trunc(random() * 5100000)::int AS id FROM generate_series(1, 1030) -- 1000 + 百分几 - 根据需要调整 LIMIT 1030 -- 查询规划器提示 ) r JOIN table b USING (id) -- 去除缺失值 UNION -- 去除重复项 SELECT b.* FROM ( SELECT 1 + trunc(random() * 5100000)::int AS id FROM random_pick r -- 加上百分几 - 根据需要调整 LIMIT 999 -- 小于1000,查询规划器提示 ) r JOIN table b USING (id) -- 去除缺失值 ) TABLE random_pick LIMIT 1000; -- 实际限制
방법 4: TABLESAMPLE SYSTEM(n) 사용
PostgreSQL 9.5에는 TABLESAMPLE SYSTEM (n)
구문이 도입되었습니다. 여기서 n은 0에서 100 사이의 백분율입니다.
SELECT * FROM big TABLESAMPLE SYSTEM ((1000 * 100) / 5100000.0);
이 방법은 빠르지만 클러스터링 효과로 인해 진정한 무작위 샘플을 반환하지 못할 수도 있습니다.
비교 및 제안
테이블의 ID 열에 대한 결측값이 거의 없고 기본 키 인덱스가 있는 경우 방법 2(인덱스 기반 방법)가 최고의 속도와 성능을 제공하므로 최선의 선택입니다. 정확한 섹스.
결측값이 많은 테이블의 경우 결측값을 효과적으로 처리할 수 있는 방법 3(재귀적 CTE)을 고려해 보세요.
방법 1 (random()
및 limit
)은 성능이 낮으므로 작은 테이블에 사용해야 합니다.
방법 4(TABLESAMPLE SYSTEM
)는 빠르지만 다른 방법만큼 정확하지는 않습니다. 큰 테이블에서 빠른 추정을 하는 데 사용할 수 있습니다.
위 내용은 PostgreSQL에서 임의의 행을 효율적으로 선택하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

mysqlviewshavelimitations : 1) 그들은 upportallsqloperations, datamanipulation throughviewswithjoinsorbqueries를 제한하지 않습니다

적절한 usermanagementInmysqliscrucialforenhancingsecurityandensuringfefficientDatabaseOperation.1) USECREATEUSERTOWDDUSERS,@'localHost'or@'%'.

mysqldoes notimposeahardlimitontriggers, butpracticalfactorsdeteirefectiveuse : 1) ServerConfigurationimpactStriggerManagement; 2) 복잡한 트리거 스케일 스케일 사이드로드; 3) argertableSlowtriggerTriggerPerformance; 4) High ConconcercencyCancaUspriggerContention; 5) m

예, It 'safetostoreBlobdatainmysql, butconsidertheStefactors : 1) StoragesPace : BlobScanconSumeSignificantspace, 잠재적으로 증가하는 CostsandSlownperformance

PHP 웹 인터페이스를 통해 MySQL 사용자를 추가하면 MySQLI 확장 기능을 사용할 수 있습니다. 단계는 다음과 같습니다. 1. MySQL 데이터베이스에 연결하고 MySQLI 확장자를 사용하십시오. 2. 사용자를 생성하고 CreateUser 문을 사용하고 Password () 함수를 사용하여 암호를 암호화하십시오. 3. SQL 주입 방지 및 MySQLI_REAL_ESCAPE_STRING () 함수를 사용하여 사용자 입력을 처리하십시오. 4. 새 사용자에게 권한을 할당하고 보조금 명세서를 사용하십시오.

mysql'sblobissuilableforstoringbinarydatawithinareldatabase, whilenosqloptionslikemongodb, redis, and cassandraofferflexible, scalablesolutionsforunstuctureddata.blobissimplerbutcanslowwownperformance를 사용하는 것들보업 betterscal randaysand

TOADDAUSERINMYSQL, 사용 : CreateUser'UserName '@'host'IdentifiedBy'Password '; 여기서'showTodoitseciRely : 1) ChoosetheHostCareLyTocon trolaccess.2) setResourcelimitswithOptionslikemax_queries_per_hour.3) Usestrong, iriquepasswords.4) enforcessl/tlsconnectionswith

toavoidcommonmistakeswithstringdatatypesinmysql, stroundStringTypenuances, chooseTherightType, andManageEncodingAndCollationSettingSefectively.1) usecharforfixed-lengthstrings, varcharvariable-length, andtext/blobforlargerdata.2) setcarcatter


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구