如何最佳化查詢記錄數的SQL操作?

anonymous發表於2003-04-17
我有一個函式用於取給定表名的表記錄數,如下:


    /**
     * 取給定表的記錄數。
     *
     * @param tableName 表名
     * @return 該表中的記錄總數
     */
    public static int getRecoundCount(final String tableName){
        //空值捕獲
        if(StringUtil.isNullorBlank(tableName))return 0;
        //記錄數
        int count = 0;
        DBOperator dbo = null;
        try{
            dbo =  new DBOperator();
            //TODO: preparestatement...... 最佳化!!!!!!!!!
            final String sql = "SELECT COUNT(*) FROM " + tableName;
            dbo.setPrepareStatement(sql);
            //dbo.setString(1,tableName);
            final ResultSet rs = dbo.executeQuery();
            //rs.last();
            //count = rs.getRow();
            //取記錄數
            if(rs.next()){
                count = rs.getInt(1);
            }
            rs.close();
        }catch(Exception ex){
            ex.printStackTrace();
            log.error(ex.getMessage());
        }finally{
            dbo.close();
            dbo = null;
        }
        return count;
    }//end getRecordCount()



但我測試的資料顯示該方法效率很低,目前資料庫資料很少,平均在850ms左右,資料庫是MYSQL的,好像用count(*)效率不高,但我試過取ID值,然後rs.last();rs.getRow()等,但效率相差無幾,而且因為是通用函式,故不可能指定ID名(資料庫中主鍵名都不相同的)

所以想問問高手有什麼可以最佳化的或其他更號效率的方法?
謝謝先:)


另:我本來用preparestatement,但在:
SELECT COUNT(*) FROM (?)時出問題,無法set進這個表名,說sql語法錯:(不知道怎麼回事:(

相關文章