Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 性能最佳的SQL选项_Java_Sql_Mysql - Fatal编程技术网

Java 性能最佳的SQL选项

Java 性能最佳的SQL选项,java,sql,mysql,Java,Sql,Mysql,我目前需要执行一个数据库查询,该查询涉及来自三个单独表的数据。 (基地、会员、出售交易) 基本表如下所示 基本id(PK)名称状态 成员表如下所示 id(主键)last_nameusernameemailfirst_name sell_事务表具有以下架构 交易编号(PK)城市 状态 基本id 达蒂德 agentId 注意-这些表包含更多的列,但它们是不相关的,所以我将节省时间,而不是将它们写出来 我正在进行一项交易查询,涉及所有这些表中的数据。我需要在从这三个表填充的TransactionIte

我目前需要执行一个数据库查询,该查询涉及来自三个单独表的数据。 (基地、会员、出售交易)

基本表如下所示

基本id(PK)名称状态

成员表如下所示

id(主键)last_nameusernameemailfirst_name

sell_事务表具有以下架构

交易编号(PK)城市 状态 基本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 ... ... } 公共事务项(){ 私有字符串名; 私有字符串lastName; 私人字符串电子邮件; 私有字符串基名称; 私人城市; 私有字符串状态; 私人日期; 公共字符串getFirstName(){ 返回名字; } 公共字符串setFirstName(字符串firstName){ this.firstName=firstName; } ... …///其他的接受者和接受者 ... ... }

目前,我正在从每个表中进行三个单独的选择,这比我想要的时间要长。我认为有一种方法可以使用join或嵌套select语句等。

数据和条件及其对应的表格如下所示

我需要……

名、姓、会员id

我需要

来自bases的名称和状态,其中来自sell_事务的base_id等于来自bases的base_id

我还需要更多,但命名它们是多余的,想法应该仍然很清楚,我需要查询相互依赖的数据。我不确定性能方面的最佳性能选项是什么。被遍历的数据量最终可能非常大或非常小(不确定这是否重要)

挑选 b、 姓名,b.state, s、 城市,s.州,s.职责,s.分行,s.日期, m、 名字、姓氏、电子邮件、电话、身份证、交易证 从…起 以b为基数,以s为销售单位,以m为会员单位 哪里 s、 agentId为null,并且 s、 username=m.username和 b、 基本id=美国责任 我在这里冒险猜测
agentID
sell\u transaction
中与
成员的连接,但它并不清楚或明显,而且可能不正确(除非您澄清您的数据模型)


我在这里冒险猜测,
agentID
是来自
sell\u transaction
member
的连接,但它不清楚或不明显,可能不正确(除非您澄清数据模型)。

为什么在多个表中有状态?它们是相同的数据吗?如果是,哪个表应该是规范源?AgentID的关系是您的成员表的外键吗?它们不是相同的数据,它们有不同的含义为什么在多个表中有状态?它们是相同的数据吗?如果是,哪个表应该是规范源?AgentID的关系是您的成员表的外键吗?它们不是相同的数据,它们有不同的含义AgentID不是与成员的连接,事实上我没有列出它,但是sell_事务表也有一个id列,该列引用中的id列member@CitadelCSAlum:如果你省略了重要的栏目,我们将很难提供帮助。您有两个“我需要…”语句,但不清楚您想要两个单独的结果集还是一个。我假设是一个,因为这是通常需要的,而且听起来你只需要一个查询。也许您可以提供一个预期结果的示例,以及您当前使用的查询。很抱歉,我没有故意省略重要的列,我真的在寻找更好的选择的建议,我可以使用嵌套的select语句,我可以使用类似于上述语句的方法,或者我可以使用三重连接类型语句。在这三种策略中,有一种明显优于另一种。CitadelCSAlum:再说一次,如果不进一步了解您的系统,就很难知道哪种策略最适合您。尝试编写所有三个查询,并通过查询分析器运行它们,以查看哪一个执行得最好。如果您为这些列中的任何一列编制了索引,这也会对性能产生影响。我已经用我一直使用的查询编辑了上述内容,希望它能让您更好地了解我正在使用的内容。agentId不是与成员的连接,事实上我没有列出它,但是sell_事务表也有一个id列,该列引用中的id列member@CitadelCSAlum:如果你省略了重要的栏目,我们将很难提供帮助。您有两个“我需要…”语句,但不清楚您想要两个单独的结果集还是一个。我假设是一个,因为这是通常需要的,而且听起来你只需要一个查询。也许您可以提供一个预期结果的示例,以及您当前使用的查询。很抱歉,我没有故意省略重要的列,我真的在寻找更好的选择的建议,我可以使用嵌套的select语句,我可以使用类似于上述语句的方法,或者我可以使用三重连接类型语句。在这三种策略中,有一种明显优于另一种。CitadelCSAlum:再说一次,如果不进一步了解您的系统,就很难知道哪种策略最适合您。尝试编写所有三个查询,并通过查询分析器运行它们,以查看哪一个执行得最好。如果您为这些列中的任何一列编制了索引,这也会对性能产生影响。我已经用我一直使用的查询编辑了上面的内容,希望它能让您更好地了解我正在使用的内容。

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
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;