>  Q&A  >  본문

java - 有关mybatis里面对同一张表的操作的疑惑

比如:
查询会员列表的话,where后面带很多个if test条件是不是会影响效率,还是重写个sql,但是如果每个条件查询都重写sql,sql又太多了,显得很乱。该怎么选择?

PHP中文网PHP中文网2741일 전492

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

  • 天蓬老师

    天蓬老师2017-04-18 10:30:32

    효율성에는 큰 영향을 미치지 않습니다. 결국 Mybatis 동적 SQL의 가장 큰 문제는 IF...TEST이 너무 많으면 나중에 유지 관리가 매우 피곤해진다는 것입니다. 하나에 대한 호출자가 많기 때문에 SQL 조합을 찾는 것도 매우 번거롭고 SQL 튜닝도 매우 어려울 것이므로 꼭 필요한 경우 쿼리마다 하나씩 작성해 보십시오(페이징 제외). , 너무 많지 않는 것이 좋습니다 IF...TEST

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 10:30:32

    if 판단을 정해진 방식으로 작성하면 크게 느리지는 않겠지만, 안되면 뷰를 이용하세요

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:30:32

    캐시가 있어야 하며 효율성에 큰 영향을 미치지 않아야 합니다.
    게다가 N개의 조건이 있는 경우 해당 조건 조합은 몇 개나 작성해야 합니까?

    회신하다
    0
  • 迷茫

    迷茫2017-04-18 10:30:32

    1. 쿼리 함수의 where 뒤에 여러 개의 if 테스트 조건이 있는 것이 일반적이며, 10~20개 이상의 쿼리 조건이 있는 것도 일반적입니다.
    2. , 분명히 최적화되어 있으며 여러 SQL을 작성한 다음 Java 코드를 통해 오프로드를 판단하는 것보다 훨씬 효율적입니다.
    3. 실행 속도에 가장 큰 영향을 미치는 것은 데이터베이스 서버의 하드웨어 구성과 데이터베이스 플랫폼입니다. 일반 프로그래머라면 그렇게 많이 생각할 필요가 없습니다. 이 문제가 정말로 걱정된다면 스트레스 테스트를 위해 자신의 코드를 테스트 환경에 넣을 수도 있습니다.
    4. 쿼리 조건의 변경에 비해 쿼리 결과 열의 변경은 수동으로 캐싱 remapResults를 닫아야 하기 때문에 효율성에 더 많은 영향을 미칩니다. 으아악

    결론적으로 작동 여부에 관계없이 코드와 SQL을 작성하고 먼저 테스트해 보겠습니다!

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