性能的最佳SQL选项

时间:2010-08-10 16:10:33

标签: java sql mysql

我目前需要执行涉及来自三个单独表的数据的数据库查询。 (碱,构件,sell_transaction

base 表如下所示

BASE_ID(PK)名称状态

成员表如下所示

ID(PK)姓氏名电子邮件first_name的

sell_transaction 表具有以下架构

的transaction_id(PK)城市 州 BASE_ID 日期编号 的agentId

注意 - 这些表包含更多列,但它们无关紧要,因此我将节省时间而不是将其写出来。

我正在进行涉及所有这些表中数据的事务查询。我需要在我从这三个表填充的TransactionItem中返回此数据

作为Pojo的TransactionItem如下所示

public TransactionItem(){

    private String firstName;
    private String lastName;
    private String email;
    private String baseName;
    private String city;
    private String state;
    private Date date;

    public String getFirstName(){
              return firstName;
    }
    public String setFirstName(String firstName){
              this.firstName = firstName;
    }
    ...
    ...///The rest of the getters and setters
    ...
    ...


}



目前我正在从每张桌子做三个单独的选择,这比我想要的时间更长。我认为有一种方法可以使用连接或嵌套的选择语句等。

数据和条件及其对应表如下

我需要...

来自成员的 first_name,last_name,id

我需要

来自 base 名称 sell_transaction 中的 base_id 等于来自 base 的base_id

我还需要更多,但是将它们命名为多余,这个想法应该仍然清晰,我需要查询相互依赖的数据。我不确定性能明智是什么是最佳性能选项。正在遍历的数据量可能会非常大或非常小(不确定是否重要)。

select b.name,b.state, s.city,s.state,s.duty,s.branch,s.date, m.first_name,m.last_name,m.email,m.phone,m.id,s.transaction_id from bases as b, sell_transaction as s, member as m where s.agentId is null and s.username = m.username and b.base_id = s.duty

1 个答案:

答案 0 :(得分:1)

select first_name, last_name, member.id member_id, bases.name, bases.state
from bases, sell_transaction, member
where sell_transaction.base_id = bases.base_id
and member.id = sell_transaction.agentId;

我正在这里,并且猜测 agentID是与member的{​​{1}}的连接,但它不明确或不明显,可能不正确(除非你澄清你的数据模型)。​​