WHERE 및 ORDER BY 절에서 모두 사용할 수있는 129 개의 필드가있는 표가있는 다중 점유 응용 프로그램이 있습니다. 저는 5 일 동안 지금 최고의 색인 생성 전략을 찾으려고 노력했지만 많은 지식을 얻었지만 아직 몇 가지 질문이 있습니다. 난 항상 (모든 쿼리가 tenant_id습니까? 그 첫 번째 장소에서 tenant_id와 복합 인덱스해야 인덱스를 만들 때tenant_id를 사용하는 Mysql 복합 색인
는1) =? 거기에 절)
2) 모든 열을 사용할 수 있기 때문에 WHERE WHERE 절과 order by 절 모두에서 모두 인덱스를 만들어야합니까? (인덱스가없는 컬럼으로 주문할 때 약 1,500,000 행의 임차인과 함께 실행하려면 6 초가 걸립니다.)
3) PK (tenant_id, ID)를 작성하지만 조인에 영향을주지는 않습니다 그 테이블에?
이 문제를 해결하는 방법에 대한 조언은 매우 감사하겠습니다.
====== 데이터베이스 엔진은 InnoDB에
=======입니다
구조 : 질문에 대한
ID bigint(20) auto_increment primary
tenant_id int(11)
created_by int(11)
created_on Timestamp
updated_by int(11)
updated_on Timestamp
owner_id int(11)
first_name VARCHAR(60)
last_name VARCHAR(60)
.
.
.
(some 120 other columns that are all searchable)
테이블 구조를 모르면이 문제에 대해 조언하기가 어렵습니다. –
ok 구조를 게시합니다. – redmoon7777
테이블 엔진이란 무엇입니까? 이것이 InnoDB라면, 가능한 한 innodb_buffer_pool_size가 큰지 확인하십시오. PK tenant_id + 일부 고유 ID (ID가 아닌 다른 고유 한 제약 조건을 가짐)를 작성하면 모든 색인의 일부가되며 다른 색인에도 필요하지 않습니다. 또한 데이터는 다음과 같을 것입니다. tenant_id 범위 쿼리로 클러스터 됨이 빠릅니다. 또한, tenant_id로 테이블을 파티셔닝 할 수 있습니다. –