Я разработал MIS-отчет в своем приложении свинга.Означает таблицу, в которой первый столбец содержит столбец даты, за которым следуют 7 столбцов статуса счета-фактуры, таких как ожидающий платеж, оплаченный, ожидающий парковку, публикация и т. Д.
Просто пытается отобразить отчет таблицы EXCEL PIVOT LIKE вСвинг, я успешно реализовал его.
, но проблема в том, что число строк увеличивается с каждым днем, и я разработал запрос типа
select count(invoice_No)
from MyTable
where ClaimStatus='columnHeader'
AND date='row1stColumn'
, и он будет проходить по всем строками столбец, чтобы получить желаемое количество и отобразить его в jtable.
Но, как я уже сказал, число строк увеличивается день ото дня, и данные таблицы SQL Server также значительно увеличиваются.
Так что мойзапрос count получает много времени для заполнения этой таблицы
Есть ли способ ускорить выполнение вышеуказанного запроса?
Если кто-то захочет увидеть мой код, я предоставлю его.
Я реализовал свое приложение, но из-за огромных данных требуется время, чтобы показать отчет MIS
Пожалуйста, посмотрите на прилагаемую картинку, которая является выводом моего кода.
И код,
1) для разных дат в 1-м столбце
q="Select distinct(Inward_Date_Short) from Inward_Master";
PreparedStatement ps=con.prepareStatement(q);
ResultSet rs=ps.executeQuery();
while(rs.next())
{
inwardDateList.add(rs.getString(1));
}
2) статические столбцы JTable
headers.add("Pending For Digitization");
headers.add("Pending For Claim Creation");
headers.add("Resolution - Pending For Claim Creation");
headers.add("Pending For Approval");
headers.add("Pending For Parking");
headers.add("Pending For Posting");
headers.add("Objection");
headers.add("Pending For Payment");
headers.add("Paid");
headers.add("Rejected");
headers.add("Outward");
3) теперь этосамый важный код, который я хочу сделать быстрее
for(int i=0;i<inwardDateList.size();i++)
{
Vector varsha=new Vector();
varsha.add(inwardDateList.get(i).toString());
for(int c=1;c<headers.size();c++)
{
try(Connection con=dbConnection.dbConnector();)
{
String q="";
q=headers.get(c).toString();
PreparedStatement ps=con.prepareStatement("Select COUNT_BIG(Inward_No) from Inward_Master where Inward_Date_Short='"+inwardDateList.get(i).toString()+"' AND Claim_Status='"+q+"'");
//PreparedStatement ps=con.prepareStatement("Select count(Inward_No) from(Select Inward_No from Inward_Master where Inward_Date_Short='"+inwardDateList.get(i).toString()+"' AND Claim_Status='"+q+"') X");
ResultSet rs=ps.executeQuery();
rs.next();
data.add(rs.getInt(1));
}
catch(Exception e)
{
e.printStackTrace();
}
}
rowdata.add(data);
}