찾다

 >  Q&A  >  본문

MySQL联合查询和简单查询究竟如何选择?

最近看高性能MySQl,里面是推荐把联合查询分解为多个简单的查询,既然是这样 那么还要联合查询干嘛?究竟是如何选择才是效率更高的选择呢?

巴扎黑巴扎黑2900일 전809

모든 응답(3)나는 대답할 것이다

  • 迷茫

    迷茫2017-04-17 16:05:20

    간단한 결합 쿼리는 일반적으로 분해할 필요가 없습니다. 여기서 말하는 것은 쿼리가 더 복잡하고 그룹화, 정렬 등을 포함하는 경우 3개 또는 4개 테이블의 결합 쿼리와 같은 더 복잡한 결합 쿼리입니다. ., 런타임에는 인덱스를 효과적으로 사용할 수 없습니다. 임시 테이블을 만드는 것도 가능합니다. 그러면 효율성이 상대적으로 떨어지게 됩니다. 그리고 쿼리 캐싱에는 도움이 되지 않습니다. 분해 후 각 단순 쿼리에 대해 데이터베이스에는 쿼리 캐싱 메커니즘이 있어 더욱 효율적입니다. 설명을 사용하여 공동 쿼리 문을 분석해 보십시오. 문제점은 무엇입니까? 대상 수정을 수행합니다. 분해할 때가 되면 분해해야 합니다.

    회신하다
    0
  • 黄舟

    黄舟2017-04-17 16:05:20

    으아악 으아악

    위는 단순한 사례입니다. 사실 공동 쿼리를 여러 개의 단순 쿼리로 분해한다는 것이 무슨 뜻인지 잘 이해가 되지 않습니다. 위의 내용은 개인적인 최적화(분해) 계획 중 일부일 뿐입니다. 매번 발생하지 않는 방식입니다).

    당신이 말하는 분해가 조인트 테이블을 여러 문으로 분할한 다음 코드에서 순차적으로 호출하는 것이라면 데이터베이스에 대한 각 연결의 IO 오버헤드는 조인트 테이블보다 훨씬 낮다고 생각합니다. 확실히 1인용 테이블보다 훨씬 높네요.

    한 문장으로 공동 테이블 쿼리의 효율성을 최적화한다는 것은 연관을 위해 최소한의 올바른 데이터를 사용한다는 의미입니다

    테이블을 연결하기 전에는 최소한의 데이터만 전달할 수 있으므로, 분명히 잘못된 것으로 알려진 데이터가 아직 많이 남아 있는 경우에는 연결을 피하기 위해 미리 올바른 데이터를 추출해야 합니다.

    어떤 조인 방식을 사용하더라도 이 방식은 적용 가능합니다.

    주문, 필드 유형, 인덱스 등 효율성을 높이는 솔루션은
    더 많습니다. 범위가 엄청납니다.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 16:05:20

    인덱스만 잘 활용하면 공동 쿼리에는 문제가 없습니다

    회신하다
    0
  • 취소회신하다