MySQL에서 INDEX, PARMY, UNIQURE, FULLTEXT의 차이점
MySQL 테이블을 만들 때 PRIMAY, UNIQURE, INDEX 및 FULLTEXT의 차이점은 무엇입니까?
어떻게 사용할까요?
차이점.
KEY 또는 INDEX는 일반적인 고유하지 않은 인덱스를 나타냅니다.인덱스에 구별되지 않는 값을 사용할 수 있으므로 인덱스의 모든 열에 동일한 값을 가진 행을 포함할 수 있습니다.이러한 인덱스는 데이터에 제한을 가하지 않으므로 액세스에만 사용됩니다. 즉, 모든 레코드를 검색하지 않고 특정 범위의 레코드에 빠르게 도달합니다.
UNIQUIC는 인덱스의 모든 행이 고유해야 하는 인덱스를 나타냅니다.즉, 같은 행이 이 인덱스의 모든 열에 대해 다른 행과 동일한 NULL이 아닌 값을 가질 수 없습니다.UNIQE 인덱스는 특정 레코드 범위에 빠르게 도달하기 위해 사용될 뿐만 아니라 데이터 삽입 또는 업데이트 시 고유 값 규칙을 위반할 수 없기 때문에 데이터에 대한 제한을 적용하기 위해 사용될 수 있습니다.
데이터베이스 시스템에서는 NULL 값을 허용하는 열에 UNIQURE 인덱스를 적용할 수 있습니다.이 경우 두 행이 모두 NULL 값을 포함하는 경우 동일한 행이 허용됩니다(이 경우 NULL은 그 자체와 동일하지 않은 것으로 간주됩니다).단, 어플리케이션에 따라서는 바람직하지 않은 경우가 있습니다.이를 방지하려면 관련 컬럼에서 NULL 값을 허용하지 않도록 해야 합니다.
PRIMAY는 항상 'PRIMAY'로 명명되어 있으며 테이블에는 1개만 있을 수 있다는 점을 제외하고 UNIQUIE 인덱스와 동일하게 동작합니다(단, 일부 데이터베이스 시스템은 이를 적용하지 않습니다).PRIMAY 인덱스는 테이블 내의 행을 일의로 식별하는 주요 수단으로 사용되므로 UNIQUICE와는 달리 NULL 값을 허용하는 열에는 사용하지 마십시오.Primary 인덱스는 행을 고유하게 식별하기에 충분한 최소 열 수에 있어야 합니다.대부분의 경우 이것은 고유한 자동 증가 숫자가 들어 있는 하나의 열이지만 국가 목록에서 "국가 코드"와 같이 행을 고유하게 식별할 수 있는 다른 항목이 있는 경우 대신 사용할 수 있습니다.
일부 데이터베이스 시스템(예: MySQL의 InnoDB)은 PRIMAY 인덱스에 나타나는 순서대로 테이블에 있는 레코드를 디스크에 저장합니다.
FULLTEXT 색인은 위의 모든 색인과 다르며 데이터베이스 시스템에 따라 동작이 크게 다릅니다.FULLTEXT 인덱스는 MATCH() / AGNT() 절을 사용한 풀텍스트 검색에만 도움이 됩니다.이러한 3개의 인덱스는 일반적으로 b-tree(왼쪽 대부분의 컬럼에서 시작) 또는 해시 테이블(왼쪽의 대부분의 컬럼에서 시작)을 사용하여 내부적으로 구현됩니다.
다른 인덱스 유형이 범용인 경우, FULLTEXT 인덱스는 "전체 텍스트 검색" 기능에만 사용되는 좁은 목적을 위해 특수화됩니다.
유사점들
이러한 모든 인덱스에는 둘 이상의 열이 있을 수 있습니다.
FULLTEXT를 제외하고 열 순서는 중요합니다. 쿼리는 왼쪽에서 시작하는 인덱스의 열을 사용해야 합니다. 정적 값을 일치시키기 위해 인덱스의 이전 열을 사용하지 않는 한 인덱스의 두 번째, 세 번째 또는 네 번째 부분만 사용할 수 없습니다. (FULLTEXT 인덱스를 사용하려면)l 쿼리에 대해 쿼리는 인덱스의 모든 열을 사용해야 합니다.)
이것들은 모두 지표의 일종입니다.
primary: 고유해야 하며 인덱스여야 하며 물리 인덱스는 테이블마다 1개만 사용할 수 있습니다.
unique: 말 그대로입니다.이 값의 튜플에는 두 개 이상의 행을 사용할 수 없습니다.하나의 키가 둘 이상의 열에 걸쳐 있을 수 있으므로 인덱스의 각 개별 열이 고유할 필요는 없지만 이러한 열에 걸친 값의 각 조합이 고유하다는 것을 의미합니다.
인덱스: 프라이머리나 일의가 아닌 경우 테이블에 삽입된 값을 제한하지 않지만 보다 효율적으로 검색할 수 있습니다.
fulltext: 전문화된 색인 형식으로 전체 텍스트 검색을 허용합니다.지정된 열에 있는 각 "단어"에 대한 "인덱스"를 작성하는 것으로 간주합니다.
다음 사항을 제외하고 잘 커버된 것 같습니다.
간단하죠.
KEY
/INDEX
(또는 다른 이름으로 불림)SECONDARY INDEX
선택성이 충분하면 퍼포먼스가 향상됩니다.이에 대해 통상적으로 권장되는 사항은 지수를 적용한 결과 집합의 기록량이 상위 표의 기록 총량의 20%를 초과하면 지수의 효력이 상실된다는 것이다.실제로는 아키텍처마다 차이가 있지만 그 생각은 여전히 옳습니다.secondary 인덱스(mysql 고유)는 프라이머리 키와 완전히 다른 개체로 간주되지 않습니다.실제로 이 두 가지 방법은 함께 사용해야 하며, 이 정보가 알려지면 mysql DBA에 추가 도구를 제공합니다.Mysql에서는 인덱스에 프라이머리 키가 포함되어 있습니다.특히 여기에 설명된 암묵적 포괄 인덱스를 교묘하게 구축할 경우 성능이 크게 향상됩니다.
데이터가 필요한 경우
UNIQUE
고유한 인덱스를 사용합니다.애플리케이션 레벨에서 해결하는 등 옵션이며 일반 인덱스로도 충분하다고 생각할 수 있지만, 실제로는 각 행이 고유하다는 것이 Mysql에 대한 보증이며, 이는 부수적으로 성능상의 이점을 제공합니다.사용할 수 있는 것은
FULLTEXT
(또는 다른 이름으로 불림)SEARCH INDEX
Innodb(MySQL 5.6.4 이상) 및 Myisam Engine 탑재사용할 수 있는 것은
FULLTEXT
에CHAR
,VARCHAR
그리고.TEXT
컬럼 타입FULLTEXT
인덱스는 단순히 인덱스를 만드는 것 이상의 많은 것을 포함합니다.생성된 수많은 시스템 테이블, 완전히 다른 캐싱 시스템, 몇 가지 특정 규칙 및 최적화가 적용됩니다.http://dev.mysql.com/doc/refman/5.7/en/fulltext-restrictions.html 및 http://dev.mysql.com/doc/refman/5.7/en/innodb-fulltext-index.html 를 참조해 주세요.
언급URL : https://stackoverflow.com/questions/707874/differences-between-index-primary-unique-fulltext-in-mysql
'IT' 카테고리의 다른 글
Python에서 .mat 파일 읽기 (0) | 2023.01.01 |
---|---|
스크립트 태그 내에서 CDATA 섹션은 언제 필요합니까? (0) | 2023.01.01 |
크롬 네트:ERR_INCOMPLETE_CHUNKED_ENCODING 오류 (0) | 2023.01.01 |
JavaScript를 사용하여 문자열을 제목 대/소문자로 변환 (0) | 2023.01.01 |
Python을 사용하여 직접 실행 가능한 크로스 플랫폼 GUI 앱을 만듭니다. (0) | 2022.12.27 |