2012-01-05 4 views
2

거의 모든 영어 단어 을 저장하는 테이블이 있습니다. 이 테이블은 현재 작업하고있는 Scrabble 타입의 단어 게임을위한 것입니다. 다음은 구문입니다.단일 열 테이블의 거대한 행에 대한 양호한 SQL 엔진

create table words(
    `word` varchar(50), 
    primary key `word` 
) 

이 테이블은 매우 커질 것입니다. 게이머가 움직일 때마다 주어진 단어가 존재 하는지를 매번 확인해야합니다.

mysql을 사용하고 있습니다. 현재 나는 ENABLE 단어를 저장했습니다. 내 질문은 내가 더 많은 단어를 추가하기 시작하면 게이머가 저조한 플레이를하지 않을 것인가? 그렇다면 최적화 할 수있는 방법이 있습니까? NO-SQL은이 시나리오와 관련이 있습니까?

+3

그냥 사용해보세요. MySQL이 땀을 흘리기 오래 전에 입력 단어가 부족할 가능성이 있습니다. – deceze

+4

[이 출처] (http://oxforddictionaries.com/words/how-many-words-are-there-in-the-english-language)에 따르면 약 250,000 개의 영어 단어가 있습니다. 소금에 합당한 DBMS는 그만큼의 가치가 있습니다. –

+0

나는 1 억 2 천만 개의 행과 25 개의 열을 가진 테이블을 가지고 있습니다. 정확하게 인덱스 만하면 성능이 저하 될 것입니다. – ManseUK

답변

1

당신은 성능에 문제가 없어야하지만 성능에 대한 걱정이 있다면 당신은이 점을 염두에 유지할 수 있습니다 :

당신이 행의 많은 경우 느린 쿼리의 원인이됩니다 대신 =의 LIKE 사용. (그러나 눈에 띄는 차이가 나기 위해서는 매우 많은 양의 행이 있어야합니다.)

큰 테이블에서 어떤 것이 더 잘 수행되는지 알아 보려면 카운트를 선택하거나 *를 선택하거나 단어를 선택하십시오.

+2

스크래블의 경우 LIKE를 사용해서는 안됩니다 ... 실제 단어가 사전에 있는지 확인하고 싶습니다 –

+0

@MarkBaker는 아마 스크래블 사전을 구현하기 전까지는 될까요? –

+0

LIKE는 다른 문자 순서에 대해 테스트하고 있기 때문에 전체 계열 (또는 완전히 다른 무언가)이 필요하기 때문에 특히 유용하지 않습니다 .... 그러나 스크래블에서 사전을 사용하는 것은 속임수입니다 :) –

관련 문제