2016-06-05 3 views
-2

id 필드로 두 개 이상의 테이블을 만드는 것이 더 나은 쿼리입니까? 하나의 쿼리 또는 많은 select 문에서 하나의 조인을 사용합니까?DB에서 정보를 얻는 가장 좋은 방법은 무엇입니까?

런타임 최적화 솔루션을 얻고 싶습니다. 예를 들어

:

내가 외래 키 필드와 같은 포함 "작업"테이블이 있습니다 (statustasks 테이블) statustask을, (taskurgency 테이블) taskurgency을 whate는 "작업을 얻을 수있는 가장 좋은 방법입니다 "목록 개체 양식 DB :

String sql = "SELECT * FROM tasks " 
      + "INNER JOIN statustask_in_language ON tasks.status=statustask_in_language.statustask_id " 
      + "INNER JOIN statustasks ON tasks.status=statustasks.id " 
      + "INNER JOIN taskurgency_in_language ON tasks.urgency=taskurgency_in_language.taskurgency_id " 
      + "INNER JOIN taskurgency ON tasks.urgency=taskurgency.id "; 
    List<task> listUsers = jdbcTemplate.query(sql, new RowMapper<task>() { 

     @Override 
     public task mapRow(ResultSet rs, int rowNum) throws SQLException { 
      task t = new task(); 
      tabelsTemplate status=new tabelsTemplate(); 
      tabelsTemplate urgency=new tabelsTemplate(); 
       t.setId(rs.getString("id")); 
       t.setDate(rs.getTimestamp("date")); 
       t.setTargetDate(rs.getTimestamp("targetDate")); 
       t.setSubject(rs.getString("subject")); 
       t.setDescription(rs.getString("description")); 
       t.setAdminId(rs.getString("adminId")); 
       t.setOpenedBy(rs.getString("openedBy")); 

       status.setId(rs.getString("status")); 
       status.setInCurrentLanguage(rs.getString("statustask_in_language.description")); 
       status.setDescription(rs.getString("desc")); 
       t.setStatusObj(status); 

       urgency.setId(rs.getString("urgency")); 
       urgency.setInCurrentLanguage(rs.getString("taskurgency_in_language.description")); 
       urgency.setDescription(rs.getString("descUrgency")); 
       t.setUrgencyObj(urgency); 

      return t; 
  • 또는의 사람이 가입 선택 사용에

    1. 조인 각 외래 키에 대해 개체를 설정하는 데 필요한 정보 참고 : Task 개체에서 외래 키는 개체 (ID가 아님)입니다.

    감사합니다.

  • +1

    MySql <> SQL Server .... –

    +0

    ? 그것의 의미가 무엇입니까? – user6319790

    +1

    MySql은 SQL Server가 아닙니다. 그것들은 두 가지 다른 제품입니다. –

    답변

    1

    이것은 매우 일반적인 질문이며 예제와 같은 적절한 정보없이 올바르게 대답 할 수 없습니다.

    모든 것은 원하는 정보와 원하는 작업에 달려 있습니다.

    여러 테이블에서 데이터를 가져와야하는 경우 불필요한 로직을 실제로 수행 할 필요없이 데이터를 서로 연결할 수있는 가장 쉬운 방법이기 때문에 JOINS이 좋습니다.

    대부분의 경우 - JOIN이 올바른 방법 일 수 있지만 예를 들어 PHP과 데이터를 정렬하는 논리가 어려울뿐만 아니라 별도의 쿼리를 사용하는 것이 더 쉬운 경우가 있습니다.

    +0

    질문을 편집했습니다. 감사합니다. – user6319790

    관련 문제