내 프로그램에는 삽입 수가 적고 자주 실행되는 프로그램이 즉각 필요하지 않으므로 INSERT DELAYED
으로 변경되었습니다. 내 코드를 살펴보고 WHERE
절에서 참조되는 필드를 확인하고 각 필드에 대한 인덱스를 추가해야합니까? 그렇다면 어떤 유형의 색인을 사용합니까? 속도가 느린 인서트입니까?WHERE 절의 모든 필드에 대해 인덱스를 추가해야합니까? - MySQL
또한 모든 데이터 유형에 대해 이러한 색인을 사용할 수 있습니까?
내 프로그램에는 삽입 수가 적고 자주 실행되는 프로그램이 즉각 필요하지 않으므로 INSERT DELAYED
으로 변경되었습니다. 내 코드를 살펴보고 WHERE
절에서 참조되는 필드를 확인하고 각 필드에 대한 인덱스를 추가해야합니까? 그렇다면 어떤 유형의 색인을 사용합니까? 속도가 느린 인서트입니까?WHERE 절의 모든 필드에 대해 인덱스를 추가해야합니까? - MySQL
또한 모든 데이터 유형에 대해 이러한 색인을 사용할 수 있습니까?
인덱싱을 고려할 수있는 두 가지 중요한 위치가 있습니다. WHERE 절에서 참조되는 열과 JOIN 절에서 사용되는 열입니다. 즉, 특정 레코드를 검색하는 데 필요한 열에 대해 색인을 생성해야합니다.
이 blog이 좋습니다.
성능 문제가 발생하기 전에 쿼리를 변경하지 마십시오. 이는 시기상조입니다. 대신 MySQL 쿼리 로그를 사용하여 오랜 시간이 걸리는 쿼리를 확인하고 이러한 쿼리를 개선하는 데 집중하십시오.
WHERE 절에서 사용할 필드에는 항상 인덱스를 추가해야합니다 (SELECT, UPDATE 또는 DELETE에 상관없이). 색인 유형은 필드의 데이터 유형과 각 행마다 고유 한 값이 필요한지 여부에 따라 다릅니다. 일반적으로 기본 인덱스 유형 (해시 대 Btree)은 자신이하는 일을 실제로 알지 않는 한 기본 설정으로 유지하는 것이 가장 좋습니다.
이제 개별 색인 (필드 당 하나) 또는 복합 색인 종류를 사용하는 방법은 응용 프로그램의 작동 방식에 따라 달라지며 고급 주제이므로 일반적으로 시작하기 만하면 각 필드를 사용하고 색인을 생성합니다. 기본 키에는 자동으로 인덱스가 있으므로 키에 다른 인덱스를 작성할 필요가 없습니다.
아직 웹 사이트를 개발하는 중입니다. 나중에 다시 돌아와서 고칠 필요없이 가능한 한 최적화 된 것으로 풀어 놓는 것이 좋습니다. –
이 단계에서도 조기 최적화를하지 못하게 할 것입니다. 직접 사용하거나 친구가 사용하도록하여 사이트의 성능을 테스트하십시오. 그런 다음 쿼리 로그에서 어떤 쿼리가 느린 지 확인하십시오. 가능한 경우 이러한 종류의 최적화를 수행하는 대신 초기에 실행하십시오. –
WHERE 절에 사용 된 필드에 인덱스를 추가하는 것은 조기 최적화가 아닙니다. 데이터베이스 디자인 101입니다. 테이블 구조를 결정할 때 항상 고려해야합니다. –