꽤 큰 테이블 (페이스 북 규모가 아니지만 백만 행 정도)에서 일부 MySQL 쿼리를 실행 중이며 매우 느리게 찾습니다. 그 이유는 내가 id
필드에서 쿼리하고 있지만 그 id
이 기본 키로 선언되지 않았으며 인덱스가 선언되지 않았기 때문입니다. 나는 id
필드에 인덱스를 추가 할 alter table
을 할 경우 그 카디 나리는, 이러한 상황에서 1로 아주 가까이 있지만이 고유하지 않기 때문에비 기본 키 열에서의 MySQL 인덱싱
나는 생각입니다, 기본 키에 id
필드를 설정할 수 없습니다 기본 키가 아니므로 쿼리 속도를 높이려면?
그렇다면 인덱스가 완전히 개발되어 쿼리가 빠르게 실행되기까지 얼마나 걸릴 것입니까? 즉, alter table
을 실행 한 후에 프롬프트가 나타나거나 프롬프트가 표시 되더라도 인덱스 건물이 상당 기간 동안 내부적으로 계속 진행되는 것입니까? (고유하지 않은 필드에 대한 색인을 선언하면 DB가 손상되는지 여부가 확실하지 않기 때문에 요청하기 전에 묻습니다.)
차가움. 그래서 제 경우에는 카디널리티가 1에 가까울 것이므로 인덱스는 기본 키 필드만큼 잘 작동합니다. 맞습니까? 중요한 성능 저하가 발생합니까? 그리고 색인 생성이 정교한 프로세스가 아닌가? 어떻게 즉시 처리 할 수 있습니까? – SexyBeast
기본 키로 사용하는 것이 의미가 있는지 여부는 응용 프로그램에 따라 다릅니다. 나는 색인이 즉시 생성되는 것이 아니라 순간적으로 생성된다고 말했다. 테이블이 크면 시간이 걸리지 만, 끝날 때까지 프롬프트를 다시 얻지는 못합니다. 단지 백그라운드 작업을 시작하는 것이 아닙니다. – Barmar
오, 그럼. 고마워요! – SexyBeast