消除嵌套视图

时间:2016-11-02 17:13:19

标签: sql sql-server tsql

请帮我优化嵌套视图。在下面的查询中使用了两个视图,这些视图的性能非常慢。

/trunk/ProjectDir:500

2 个答案:

答案 0 :(得分:0)

您是否无法移除where子句,删除其中一个视图,并在添加where子句的剩余视图上执行选择? (原始问题有2个观点)

答案 1 :(得分:-1)

请尝试下面的内容,

<强>查看:

  • 尝试从视图定义中删除where子句,并将两个视图合并为一个

根据我的理解,如果可能的话,您可以在主查询中替换LENER OUTER JOIN和INNER JOIN,以及视图定义。

根据我的理解,下面是要尝试的查询。请分享有关表结构,索引,执行计划以及查询期望的完整输出的更多详细信息。

 try{
    chge=jTextField27.getText();
    cash=jTextField4.getText();

    String SQLL = "update customer (Cash,Chnge) values ('" + cash + "','" + chge + "') where Room = ? and Name = ?;";     
    Dbase5 = conn.prepareStatement (SQLL); 
    Dbase5.setString(1,jTextField1.getText());
    Dbase5.setString(2,jTextField2.getText());
    int b = Dbase5.executeUpdate();

    ////////MOVE TO HISTORY   
    String SQL = "INSERT INTO history select * from customer where Room = ? and Name = ?";     
        Dbase = conn.prepareStatement (SQL);
        Dbase.setString(1,jTextField1.getText());
        Dbase.setString(2,jTextField2.getText());
        int rs=Dbase.executeUpdate();

       ///////MOVE TO HISTORY
    String MSQL = "delete from customer where Room=? and Name=?";
        Dbase1 = conn.prepareStatement (MSQL); 
        Dbase1.setString(1,jTextField1.getText());
        Dbase1.setString(2,jTextField2.getText());
        boolean s = Dbase1.execute();
        this.dispose();