예를 들어, 방문자 (봇 등)를 감지 할 수있는 데이터베이스가 있고 모든 방문자가 '자격증 명'과 동일한 양의 '동적 테이블'을 가지고있는 것은 아닙니다. 참조 : fiddle : http://sqlfiddle.com/#!9/ca4c8/1 (단순화 된 버전).MySQL 자체 조인 성능 : 사실 또는 잘못된 색인 생성?
이렇게하면 (다른 DB에있는) 각 프로필에 대한 정보를 수집하는 데 사용하는 프로필 ID가 반환됩니다. 프로필 유형에 따라 다른 name
절 (name = 'something') (ei : hostname, ipAddr, userAgent, HumanId 등)을 사용하여 테이블을 쿼리합니다.
나는 SQL 전문가가 아니에요하지만 난이 검색 결과에서 본 것을 나는 인덱스, 제약, 차, 고유, 외래 키 등으로 그리고에서 잘 알고 :
- Mysql Self-Join Performance
- How to tune self-join table in mysql like this?
- Optimize MySQL self join query
- JOIN Performance Issue MySQL
- MySQL JOIN performance issue
그들 대부분은 조인 자체에 나쁜 성능에 대한 의견하지만 인덱스를 원인을 누락 을 위해 이동하는 경향이답이있다.
그래서 마지막 질문은 테이블 자체 조인은 모든 것이 적절히 색인되어 있다고 가정하면 나쁜 성능을 내기 쉽습니다. 보조 노트에
는 테이블에 대한 자세한 정보는 : 질문에 관련성이없는하지만 내 특정 상황에 대한 맥락에서 잘 수 있습니다
- 열 플래그로 삭제 기록을 표시하는 데 사용됩니다 PHP에서 사용하는 사용자에게는이 데이터베이스에 대한 DELETE 권한이 없습니다. 죄송합니다. 보안이 성능보다 중요합니다.
- 사용자 에이전트에서 얻은 정보와 함께 사용할 '유형'을 추가했습니다. (즉, 어떤 것이든지 봇이라면 적어도 5000 형만 검색 할 것입니다.
- 'name'열은 불행히도 기본 키 (프로필 및 유형 포함)에 색인되어 있습니다.
- 나는 많은 INT와 필터링 (WHERE)을 사용하여 결과의 궁극적 인 손실을 줄이기 위해 SELECT 쿼리에서 시도했다. (심지어 문제가있는 경우)
- 높은 배경을 가진 사람이 필요하지 않으면 연구하고 조정할 의향이있다. mysql은 정말 좋은 일이 아니라는 것을 알려줍니다.
이것은 내가 개발 한 커다란 프로젝트로, 수백만 개의 레코드로 테스트 할 수는 없지만, 필자는 performan 이것이 성장함에 따라 문제가 될 것입니다. 모든 입력, 링크, 참조, 문서 또는 시험 절차 (어쩌면 의견에 있음)는 높이 평가됩니다.
설명서에 대한 감사, 당신이 찾고 있던 입력의 종류. 내가 2 개의 칼럼을 사용하지 않은 이유는 다른 유형의 프로파일이 필요하다는 것입니다. 속성의 양. (ei : apis에는 name, addr, appid, token이 4 개 필요합니다). –
"자체 조인은 두 개의 다른 테이블 조인과 다르지 않습니다." 똑바로 앞으로 답변을하고 귀하의 프로필을보고 나는 이걸로 충고를 느낀 것처럼 보인다. –