Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

int 유형의 열에 대한 MySQL 인덱스?

<시간/>

테이블에 많은 레코드가 있을 때마다 쿼리를 더 빠르게 실행하려면 int 유형의 열에 인덱스를 추가하는 것이 좋습니다.

테이블에 더 적은 레코드가 있는 경우 int 유형의 열에 인덱스를 사용하는 것은 좋은 선택이 아닙니다.

개념을 이해하기 위해 테이블을 만들어 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -

mysql> create table indexOnIntColumnDemo -> ( -> UserId int, -> UserName varchar(20), -> UserAge int, -> INDEX(UserId) -> );Query OK, 영향을 받는 행 0개(0.85초) 

이제 테이블의 설명을 확인하십시오 -

mysql> desc indexOnIntColumnDemo;

다음은 출력입니다 -

+----------+-------------+------+-----+-------- -----------+| 필드 | 유형 | 널 | 키 | 기본값 | 추가 |+---------+-------------+------+-----+--------- +-------+| 사용자 ID | 정수(11) | 예 | MUL | 널 | || 사용자 이름 | varchar(20) | 예 | | 널 | || 사용자 연령 | 정수(11) | 예 | | 널 | |+------------+-------------+------+-----+---------+ -------+3 행 세트(0.04초)

이제 insert 명령을 사용하여 테이블에 일부 레코드를 삽입할 수 있습니다. 쿼리는 다음과 같습니다 -

mysql> insert into indexOnIntColumnDemo values(1001,'John',23);Query OK, 1행 영향(0.22초)mysql> insert into indexOnIntColumnDemo values(1002,'Sam',25);Query OK, 1행 영향을 받은(0.14초)mysql> indexOnIntColumnDemo 값에 삽입(1003,'Carol',22);쿼리 OK, 영향을 받는 1행(0.24초)mysql> indexOnIntColumnDemo 값에 삽입(1004,'Mike',26);쿼리 OK, 영향을 받는 행 1개(0.14초)

이제 select 문을 사용하여 테이블의 모든 레코드를 표시할 수 있습니다. 쿼리는 다음과 같습니다 -

mysql> select *from indexOnIntColumnDemo;

다음은 출력입니다 -

+--------+----------+---------+| 사용자 ID | 사용자 이름 | 사용자 연령 |+--------+----------+---------+| 1001 | 존 | 23 || 1002 | 샘 | 25 || 1003 | 캐롤 | 22 || 1004 | 마이크 | 26 |+--------+----------+---------+4행 세트(0.00초)

더 빨리 실행하려면 int 유형의 인덱스 열에 조건을 사용하십시오.

mysql> select *from indexOnIntColumnDemo where UserId=1004;

출력은 다음과 같습니다

+--------+----------+---------+| 사용자 ID | 사용자 이름 | 사용자 연령 |+--------+----------+---------+| 1004 | 마이크 | 26 |+--------+----------+---------+1 행 세트(0.00초)