2010-02-26 13 views
1

내 웹 응용 프로그램에서 내 SELECT 쿼리의 속도를 높이려고합니다. 필자는 MySQL 자체가 아닌 PHP에 의해 리턴 된 행을 정렬하는 것과 같은 아주 중요한 최적화를 수행했습니다. 이제는 기본 키인 열에서 SELECT 문을 사용하는 것이 더 빠릅니까?MySQL에서 SELECT를 사용하여 기본 키를

예를 들어, 구성에 사용중인 settingKeysettingValue 열이있는 표가 있습니다. settingKey이 주 색인 인 경우 settingValue의 내용을 잡는 것이 더 빠르지 않습니까?

SELECT settingValue FROM config WHERE settingKey="MasterPassword" 

나는 Google에서 답변을 시도했지만 분명한 답변이 없습니다.

감사합니다. :)

답변

1

예, 큰 테이블에서 단일 행을 선택하는 경우 기본 키가 거의 확실하게 성능을 향상시킵니다. 이는 테이블에 인덱스를 작성하기 때.에 전체 테이블 스 5보다 더 효율적으로 필수 행을 찾는 데 사용할 수 있기 때.입니다.

또한 setKey 값에 고유성을 적용합니다.

0

색인이 전혀없는 것으로 가정하고 있습니다. settingValue에 부분적으로는 이해가되지 않을 수도 있고 부분적으로 언급하지 않았기 때문일 수도 있습니다. 내 가정이 정확하다면 기본 키로 쿼리하는 것은 엄청난 성능 향상입니다. 테이블에 대한 가장 효과적인 액세스 경로입니다.

일반적으로 WHERE 절에 색인이 생성되지 않은 열은 사용하지 마십시오.

0

기본 키 수단 :

  • 꽤 좋은 수 있습니다 의미합니다

독특한 인덱스

  • .

    따라서 where 절에서 기본 키를 사용하면 성능이 좋을 것입니다. (!) 참고으로


    는 "불과 몇으로,

    • 는"작은 "열 : 종종 기본 키와 인덱스 모두를위한"작은 "및"간단한 "있는 열을 사용하는 것이 좋습니다 바이트 비교 "는 더 간단한 비교를 의미합니다. 두 개의 2 바이트 정수를 비교하여 두 개의 4 바이트 정수를 비교하는 것이 더 쉽습니다.
    • "간단한"열 : 두 개의 4 바이트 정수를 비교하는 것이 더 쉽고 빠릅니다. varchar(20)- 데이터 정렬에 대한 생각 : 문자열 비교는 대소 문자를 구분하지 않고 액센트를 구분하지 않는 비교를 의미합니다! 기본 키가 varcharinteger 필드, 그리고하지 않을 경우

    는 예를 들어, 귀하의 경우, 그것은 공연 (적어도 비트) 좋을 것이다.

  • 0

    예, 기본 키는 색인 생성되고 고유하므로 빠릅니다.

    또는 쿼리 할 필드에 새 인덱스를 만들 수 있습니다. 자세한 내용은 http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html을 참조하십시오. 이렇게하면 기본 키를 쿼리하는 것과 동일한 쿼리 성능을 얻을 수 있습니다.

    하지만 데이터베이스로드 시간이 약간 늘어날 수 있습니다. MyISAM 표와

    0
    SELECT settingValue FROM config WHERE settingKey=`MasterPassword` 
    

    ,이 쿼리는 동일한 성능이 settingKeyPRIMARY KEY 또는 보조 인덱스가 될 것입니다. settingKey보조 인덱스 경우 InnoDB 테이블로

    ,이 쿼리는 대부분의 아마 빨라집니다.

    InnoDB 테이블이 클러스터 된 경우 이는 테이블 자체가 PRIMARY KEY 색인임을 의미합니다.

    테이블은 보조 인덱스보다 크기가 커지는 경향이 있으므로 테이블에 대한 조회는 색인에 비해 느립니다.

    관련 문제