2014-05-23 1 views
0
createTable('messages', 
    'id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
     auth VARCHAR(16), 
     recip VARCHAR(16), 
     pm CHAR(1), 
     time INT UNSIGNED, 
     message VARCHAR(4096), 
     INDEX(auth(6)), 
     INDEX(recip(6))'); 

이것은 테이블을 생성하기위한 mysql 명령이다. "INDEX (auth (6))"및 "INDEX (recip (6))"명령의 마지막 두 줄은 무엇입니까? 나는 phpMyAdmin을 사용하는 데 익숙하며 더 많은 그래픽 인터페이스에 익숙합니다. 이 명령을 그래픽 인터페이스 프로세스와 어떻게 관련시킬 수 있습니까? MySQL의 터미널 또는이 PHP 내 관리자에서mysql 쿼리에 혼란이있다.

답변

0

는 또한 그것은 어떤 목적을 제공하지 않기 때문에 message VARCHAR(4096),이 이해가되지 않습니다 테이블

create table messages(
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
     auth VARCHAR(16), 
     recip VARCHAR(16), 
     pm CHAR(1), 
     time INT UNSIGNED, 
     message VARCHAR(250), 
     INDEX (auth), 
     INDEX (recip) 
); 

을 만드는 방법이다.

What is the MySQL VARCHAR max size?

마지막이 명령

authrecip 여기

이 컬럼에 인덱스를 생성하는 것은 테이블에 인덱스를 만들 포함되어 http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

+0

왜'VARCHAR (4096)'은 의미가 없지만'VARCHAR (250)'는 무엇을합니까? 컬럼이 보유 할 문자를 효과적으로 제한합니다. *** 4096 *** 그렇지 않습니까? – War10ck

+0

@ War10ck (문서 당) VARCHAR 열의 값은 가변 길이 문자열입니다. 이 길이는 MySQL 5.0.3 이전에는 0에서 255까지, 5.0.3 이후 버전에서는 0에서 65,535 사이의 값으로 지정할 수 있습니다. 그러나 큰 입력의 경우 TEXT, MEDIUMTEXTOR LONGTEXT를 대신 사용하는 것이 더 좋습니다. –

0

INDEX(auth(6))INDEX(recip(6))에 대한 어떤 인덱스 . 인덱스가 만들어져 쿼리 (예 : SELECT * FROM messages WHERE auth=<xyz>)가 더 빠르게 실행됩니다.

MySQL 설명서에는 creating indexeshow they are used by MySQL에 대한 정보가 들어 있습니다.

this question on SO에서 색인 생성이 작동하는 방식에 대한 자세한 설명이 나와 있습니다.