2011-08-04 2 views
1

많은 일대일 채팅 세션의 모든 데이터를 저장할 MySQL 테이블을 구축 중입니다.채팅 SQL 테이블에 대한 빠른 인덱싱

삽입이 항상 순차적 일 때 색인화 된 테이블에 대한 삽입이 여전히 느립니까?

채팅 시스템을 사용하면 자주 검색하고 자주 삽입하는 것을 기대합니다.

각 채팅 세션은 자신의 세션 ID와 최신 게시물 ID를 추적합니다. 새로운 소식을 얻으려면 다음과 같은 검색어를 실행할 수 있습니다.

SELECT * FROM chat WHERE sessionID = xxxx AND postID > xxx 

다차원 색인 생성 방법이 있습니까? 주로 세션 ID와 postID 순으로 색인을 생성하는 가장 빠른 방법 인 것 같습니다.

+0

데이터베이스 서버가 무엇 ? –

+0

OSX Apache MySQL PHP 설정입니다. 그게 당신이 의미 한 것입니까? – objectivesea

+0

MySQL에서는 sessionID, postID에 인덱스를 가질 수 있습니다. 위의 쿼리에 대한 최상의 인덱스입니다. 빠른 삽입을 위해 autoincremet 기본 키를 사용하십시오 (일반적으로 큰 테이블의 경우 차이가 있음). –

답변

2

다른 사람이 제안한 것처럼 해당 쿼리에 다중 열 인덱스를 사용할 수 있습니다.

즉, 이 아닌 다차원 인덱스가 아니라 동일한 차원에 두 개의 열만 넣는 것입니다. 성, 이름으로 된 인쇄 된 전화 번호부를 생각해보십시오. 두 개의 열이 있지만 하나의 차원 만 있습니다.

특정 쿼리의 중요한 측면은 하나의 범위 조건이 있다는 것입니다. 최상의 성능을 위해서는 먼저 평등 조건과 함께 열을 넣고 범위 조건을 다른 주석 자의 제안처럼 색인에 넣는 것이 중요합니다. 당신은 다차원적인 것을 필요로하지 않습니다.

범위 조건이 두 개 이상인 경우 다차원 인덱스가 실제로 필요합니다 (원하는 경우). 그것에 대해

더 : http://use-the-index-luke.com/sql/where-clause/searching-for-ranges/greater-less-between-tuning-sql-access-filter-predicates

0

이와 같이 두 열에 색인을 생성 할 수 있습니다.

관련 문제