2016-06-05 2 views
-2

Какой запрос лучше получить в форме данных более двух таблиц по полю id? использовать одно соединение по одному запросу или по многим операторам выбора?Каков наилучший способ получить информацию из БД?

Я хочу получить оптимальное решение времени работы.

Например:

У меня есть «задачи» таблицы, которые включают в себя внешние ключи поля, как: statustask (из таблицы statustasks), taskurgency (из taskurgency таблицы) whate это лучший способ, чтобы получить «задачи "список форма объекта DB:

  1. с соединениями:

    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; 
    
  2. или использовать один присоединиться и выберите s для каждого внешнего ключа для установки объекта. Примечание: в объекте Задача внешние ключи являются объектами (а не идентификаторами).

спасибо!

+1

MySql <> Sql Server .... –

+0

? Что это значит? – user6319790

+1

MySql не является сервером Sql. Это два разных продукта. –

ответ

1

Это очень общий вопрос, на который невозможно ответить правильно, как на примере.

Все зависит от того, какую информацию вы хотите и что вы хотите с ней делать.

Если вам требуется получить данные из нескольких таблиц, то можно перейти к JOINS, поскольку это самый простой способ подключения данных друг к другу, не требуя при этом лишней логики.

В большинстве случаев - JOIN будет правильным способом, но опять же есть случаи, когда логика выравнивания данных с PHP будет сложной, и отдельные запросы могут быть проще в использовании.

+0

Я отредактировал вопрос, спасибо! – user6319790

Смежные вопросы