2016-09-11 3 views
1

거대한 회원 데이터베이스가 있습니다. 내가 10 명의 이름을 가지고 있다고 가정 해 봅시다. 회원 테이블에서 가장 최근에 본 멤버의 값을 가장 빠른 방법으로 가져와야합니다. 내가 시도했습니다mySQL - 쿼리에서 많은 또는 oparators를 사용하는 더 좋은 방법이 있습니까?

SELECT lastseen FROM members WHERE 
name='Pierce' OR 
name='John' OR 
name='Steven' OR 
name='James' OR 
name='Ernie' OR 
name='Stuart' OR 
name='Blake' OR 
name='Shaun' OR 
name='Pat' OR 
name='Lola' 

하지만 쿼리에서 많은 OR oparators를 사용하여 전문가가 아닌 방법이며 느린, 더 나은 방법이 있습니까?

답변

8

사용 IN : MySQL의에서

SELECT lastseen 
FROM members 
WHERE name IN ('Pierce', 'John', . . .) 

, 심지어 IN 대신 OR의의를 사용하는 성능상의 이점이있다. MySQL은 값을 검색하기 위해 이진 트리를 생성합니다 (상수라고 가정). 그러면 처리 속도가 빨라집니다.

+0

고마워요,하지만 정확한 검색입니까? John을 검색하면 Johnny도 선택합니까? 또한 올해의 가장 큰 Stackoverflow 사용자 인

+0

@ canertaşdemir가 답을 얻게되어 운이 좋습니다. . . 정확한 검색입니다. 대개 '='와 동일합니다 (예 : 다른 데이터 정렬이있는 경우 차이가 발생할 수 있음). –

관련 문제