2012-09-10 2 views
0

4 가지 정렬 옵션이있는 필드가 있습니다. 그리고 다른 경우, 필드는 이러한 4 가지 옵션과 2 가지 날짜 및 사용자 ID별로 정렬되거나 필터링됩니다. 의 컬럼이 있다고 가정하자 :mySql 테이블에 인덱스가 많습니까?

Colums :

그것을인가 : ID는, 인포, 정보 2, 옵션 1, 옵션 2, 옵션 3, | 옵, 날짜 1, 날짜 2, 사용자 ID는

그래서 제 질문은 이것이다 테이블 (option1, option2, option3, option4, date1, date2, userid)에 7 개의 다른 인덱스가 있는지 확인 하시겠습니까? 대형 데이터베이스에서 데이터베이스 읽기 및 쓰기 성능에 영향을 줍니까?

예인 경우 솔루션으로 무엇을 제안합니까?

답변

0

테이블을 INSERT 또는 UPDATED 할 때 인덱스를 업데이트해야합니다. 따라서 인덱스가 많을수록 이러한 작업이 느려집니다.

MySQL은 일반적으로 쿼리 당 테이블 당 인덱스를 하나만 사용합니다. 네 가지 정렬 옵션이있는 경우 일반적으로 각 정렬 옵션을 다루는 인덱스가 있어야합니다.

IIRC, (a, b, c)는 (a, b, c)가 둘 모두를 다루기 때문에 색인을 필요로하지 않습니다.

0

CREATE, UPDATE 또는 DELETE을 수행 할 때마다 색인을 업데이트해야합니다. 그러므로, 당신은 SELECT 진술의 집중도에 근거하여 지수를 제한해야합니다. 예를 들어 복합 인덱스 (c1, c2)이 있고 c2 만 선택하는 쿼리를 실행하면 인덱스가 작동하는 방식에 대한 기본적인 이해가 필요합니다. 쓸모가 없습니다. 색인 대신 VIEW을 만드는 방법을 살펴볼 수도 있습니다.

+0

색인이 업데이트시에 업데이트됩니까? 또한 'MySQL'은 VIEW에 대한 끔찍한 지원을하고 있으며, 성능 향상에 도움을주지 않습니다. 그렇다고하더라도 어느 정도의 속도로 뷰를 조회하려면 색인이 필요합니다. 이 둘은 서로 교환 할 수 없습니다. – Naltharial

+0

@ Naltharial 그것을 잡아 주셔서 감사합니다. 내가보기에 좋은 성능을 가지고있는 MSSQL에 더 많은 노출을했습니다. – Kermit

0

'색인 및 개념'은 상거래입니다. 검색 속도가 향상 될 수 있지만 비용은 다른 곳에서 지불해야합니다. 인덱스는 각 UPDATE, DELETE 및 INSERT 명령에서 업데이트되어야하므로 많은 인덱스가 DML 명령을 훨씬 오래 걸리게합니다. 그들은 수색에서 당신을 봉사하고 싶 당신은 대신에 가격을 지불해야한다. 인덱스가 많을수록 검색 속도가 빨라지고 UPDATE 및 INSERT 시간이 길어집니다. 그들은 매우 현명하게 사용하고 조정해야합니다.

이 비용 절감 효과는 정규화에서도 볼 수 있습니다. 더 나은 분석 능력과 널리 퍼져있는 데이터 인 정규화를 얻게되며,이를 수집하고 조인하는 비용을 지불해야합니다.