java - 唯一约束和程序查询是否存在的优缺点?
PHP中文网
PHP中文网 2017-04-18 10:03:43
0
3
369

我想要保持数据库记录的不重复,现在有两种方案,一种是给这一个(或多个)字段添加唯一性约束,一种是程序先去查询数据库是否存在给个字段值的记录,再决定是否插入?请问这两种方式该如何抉择?有更好的方式么?

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(3)
巴扎黑

고유성을 보장하기 위해 프로그램에 의존하는 것은 신뢰할 수 없습니다. 동시성이 높은 상황에서는 다음 두 단계가 겹쳐서 반복 삽입이 발생하기 때문입니다.

  1. 데이터베이스에 이미 레코드가 있는지 확인

  2. 그렇지 않은 경우 기록 삽입

小葫芦

고유한 제약 조건을 선택하는 것이 더 좋습니다:

  • 애플리케이션 로직을 단순화합니다.

  • 고유 제약 조건을 설정할 때 시스템은 일반적으로 쿼리 성능을 높이면서 고유성을 보장하기 위해 자동으로 인덱스를 생성합니다. (PostgreSQL 문서)

고유 제약 조건을 추가하면 제약 조건에 나열된 열 또는 열 그룹에 고유한 B-트리
인덱스가 자동으로 생성됩니다.

伊谢尔伦

저자는 데이터베이스의 목적이 무엇인지 이해해야 합니다. 데이터베이스 시스템은 파일 시스템에서 개발됩니다. 두 번째 옵션을 따르면 데이터베이스를 직접 저장할 수 있습니다. 데이터베이스는 단순한 SQL이 아니라 DBMS로서 다양한 기능을 제공하므로 시스템의 기본 액세스를 최적화하는 동시에 애플리케이션 문제 해결에 집중할 수 있습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!