2013-06-07 4 views
0

테이블에 ID 열이있는 경우, AUTOINCREMENT가있는 PRIMARY KEY가 있다고 가정 해 보겠습니다. 내가 할 경우제한적 또는 제한적입니까?

같은 쿼리 :

SELECT * FROM table WHERE ID = ? 

그것은 LIMIT 1를 추가 할 필요가?

성능이 향상 될까요?

PHP의 PDO에서 SQLite를 사용하고 있습니다.

+2

고유 ID가 있다고하면 'LIMIT'을 쓰지 않아도됩니다. –

+0

네,하지만 엔진이 처음 발견 된 레코드를 알고 멈추는 지 궁금합니다. – thelolcat

+1

SELECT * FROM 테이블 WHERE ID =?를 실행하면 모든 것을 알 수 있습니다. –

답변

5

기본 키인 경우 엔진이 올바른 작업을 수행해야합니다. 기본 키 인덱스는 unique 인덱스이므로 일치하는 값이 하나뿐임을 MySQL에 알립니다.

비록 그렇지 않더라도 성능에 미치는 영향은 매우 미미합니다. 엔진은 기본 키 인덱스를 사용하여 인덱스에서 올바른 위치로 바로 이동하여 올바른 값을 찾습니다. 그런 다음 데이터 페이지를로드합니다 (select *을 만족시키기 위해).

그런 다음 바로 중지합니다. 또는 인덱스에서 다음 값을 스캔하여 읽은 다음 중지합니다. 추가 오버 헤드는 인덱스의 다음 값을 읽는 것입니다. 데이터 페이지를로드하는 것과 비교할 때 매우 적은 오버 헤드.

이러한 것들에 관심이 있으시면 documentation을 확인하십시오.

관련 문제