如何避免从数据库中不必要地获取数据?

时间:2013-11-29 04:30:24

标签: mysql database performance jdbc

执行以下JDBC代码时,我在MySQL管理员中观察了几个不必要的数据库提取活动。

public void tableData() {
    List<TaxAccountReportTableBean> tdata = new ArrayList<TaxAccountReportTableBean>();
    Connection con = null;
    Statement st = null;
    ResultSet rs = null;
    Class.forName("com.mysql.jdbc.Driver");
    con = (Connection) DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/inventory" + "", "root", "root");
    st = (Statement)con.createStatement(); 

    try {
        String qry = "SELECT taxno, region, taxname ,  tax, cf, cftax  FROM  Tax";
        System.out.println("-------->"+qry);
        rs = st.executeQuery(qry);

        while (rs.next()) {
            trtb = new TaxAccountReportTableBean();
            trtb.setTaxno(rs.getString(1));
            trtb.setRegion(rs.getString(2));
            trtb.setTaxname(rs.getString(3));
            trtb.setTaxpercent(rs.getString(4));
            trtb.setCfreq(rs.getString(5));
            trtb.setCftax(rs.getString(6));
            tdata.add(trtb);
        }

        rs.close();
        st.close();
        con.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

当我执行查询时,我在MySQL管理员中观察到10个查询正在访问数据库。由于这种不必要的提取,应用程序性能很差。这是怎么造成的,我该如何解决?


更新:我调试了代码,发现在连接创建过程中发生了不必要的查询提取,而不是在从查询中获取数据时。我该如何避免这个问题?

1 个答案:

答案 0 :(得分:1)

在mysql中,您可以使用WHERE条件来过滤数据。可以使用limit子句来获取特定的行数据。

String qry = "SELECT taxno, region, taxname ,  tax, cf, cftax  FROM  Tax WHERE your_condition limit 10"

你的情况会是这样的:

name LIKE "%abc%" //or you can use any thing based on your db structure.