잡동사니

반응형

질문

다음 스키마가있는 테이블이 있습니다.

CREATE TABLE IF NOT EXISTS `feeds` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `external_id` varchar(255) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `notes` text,
  `image_id` int(11) DEFAULT NULL,
  `location_id` int(11) DEFAULT NULL,
   PRIMARY KEY (`id`),
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9046 ;

external_id location_id 에 인덱스를 만들고 있는데, 이는 테이블에 영향을주는 다른 쿼리에 대해 별도로 사용되도록되어 있습니다. 레코드가 추가, 업데이트 또는 삭제 될 때마다 MySQL이 인덱스를 다시 작성해야한다는 것을 알고 있습니다. 내가 알아낼 수없는 것은이 테이블에서 레코드의 name 필드를 업데이트하면 인덱스 중 하나 또는 둘 모두가 다시 작성되는 경우입니다. 또한이 두 개의 개별 인덱스가 서로의 성능에 부정적인 영향을주지 않고이 테이블에 존재할 수 있는지 궁금합니다. 시간 내 주셔서 감사합니다.


답변1

인덱스는 "다시 작성"되지 않지만 업데이트됩니다. 인덱싱되지 않은 열의 데이터를 변경해도 다시 인덱싱 작업이 발생해서는 안됩니다.



답변2

사용중인 MySQL 스토리지 엔진 인 MyISAM은 행이 업데이트 될 때마다 인덱스를 업데이트합니다. 즉, 테이블에 인덱스가 많을수록 해당 테이블에서 행을 삽입, 업데이트 또는 삭제하는 데 더 많은 시간이 걸립니다. 그러나 쿼리는 더 빨리 실행되어야합니다. 쿼리 계획에 EXPLAIN을 사용할 수 있습니다.



 

 

 

 

출처 : https://stackoverflow.com/questions/12899607/multiple-indexes-on-the-same-table

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band