2013-08-18 6 views
4

There is a structure: 
CREATE TABLE IF NOT EXISTS `categories` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `parent_id` int(11) unsigned NOT NULL DEFAULT '0', 
    `title` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`), 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

Query_1: 
SELECT * FROM `categories` WHERE `id` = 1234 
Query_2: 
SELECT * FROM `categories` WHERE `id` = 1234 LIMIT 1 

하나의 행만 가져와야합니다. 우리는 WHERE id=1234 (PRIMARY KEY로 찾기)을 적용 했으므로 id = 1234 인 행은 전체 테이블에서 하나 뿐인 것이 분명합니다.
MySQL이 행을 찾은 후에 엔진이 Query_1을 사용할 때 검색을 계속할 것인지 여부를 결정합니다.
미리 감사드립니다.다음 예에서 "LIMIT 절"을 사용해야합니까?

답변

6

이 SQLFiddle : http://sqlfiddle.com/#!2/a8713/4을보고 특히 실행 계획보기.

MySQL에서는 PRIMARY 열의 조건자를 인식하므로 LIMIT 1을 추가 할지라도 상관 없습니다.

추신 : 조금 더 설명 : 행 실행 계획의 행을보십시오. 숫자에는 쿼리 엔진이 생각하는 열의 양이 있습니다. 검사해야합니다. 열 내용이 고유하므로 (기본 키이므로) 1입니다.이 키를 http://sqlfiddle.com/#!2/9868b/2과 동일하지만 기본 키가없는 키와 비교하십시오. 여기 은 8입니다. (실행 계획은 독일어 MySQL 참조, http://dev.mysql.com/doc/refman/5.1/en/explain.html에 설명되어 있습니다. 영어로 된 이유는 자세히 설명하지 않습니다.)