2010-06-29 10 views
3

나는 id, member_id, topic_id 필드를 가지고 있습니다. 때로는 id, 때로는 member_id, 때로는 topic_idWHERE 절에 사용합니다. 모든 항목에 색인을 추가 할 수 있습니까? 속도가 느려 집니까? MYSQL 최적화에 익숙하지 않아서 고마워.MySQL 인덱스는 몇 개나 추가 할 수 있습니까?

답변

4

사용하지 않는 색인은 SELECT를 느리게 만들지는 않지만 추가 한 색인은 INSERT 및 UPDATE를 느리게 만듭니다.

MyISAM 테이블이 가질 수있는 인덱스의 최대 수는 당신은 다음과 같은 경우에서와 같이, 단 하나의 필드에 쿼리를 필터링 될 경우 각 필드에있는 별도의 인덱스를 원하는 것, 일반적으로 64

+0

INSERT 및 UPDATE를 많이 느리게 만들지 않습니까? 그리고 당신이 PHP/MySQL을 잘 볼 수있는 것처럼, 시간이 있으면이 질문을 확인하십시오 : http://stackoverflow.com/questions/3138487/how-many-fields-is-normal-to-have-in- one-table –

+3

일반적으로 거대한 업데이트를 수행하지 않는 한 걱정할 필요가 없습니다. 큰 삽입의 경우 인덱스를 일시적으로 삭제하고 이후에 다시 작성할 수 있습니다. –

+1

또한 EXPLAIN을 사용하여 지정된 쿼리가 예상 한 인덱스를 사용하고 있는지 확인하고 새 인덱스의 필요성을 확인할 수 있습니다. –

2

입니다 :

SELECT * FROM your_table WHERE id = ?; 
SELECT * FROM your_table WHERE member_id = ?; 
SELECT * FROM your_table WHERE topic_id = ?; 

id 필드가 기본 키 인 경우, 그 아마 이미 clustered index을 사용하고 있습니다.

CREATE INDEX ix_your_table_member_id ON your_table (member_id); 
CREATE INDEX ix_your_table_topic_id ON your_table (topic_id); 

또한 covering indexes의 주제를 연구에 관심이있을 수 : 따라서 그것은 당신이 member_idtopic_idnon-clustered indexes 별도의 두 가지를 만드는 시도 할 수 있습니다 것 같습니다.

관련 문제