簡體   English   中英

從數據庫獲取數據的有效方法

[英]Efficient way to fetch data from database

我想知道哪種查詢樣式更好更有效

我正在使用jdbc從多個表中獲取數據(我有十多個表來獲取數據)。 所有數據都與鍵相關

為此,我正在考慮兩種方法

1)我正在使用聯接從數據庫中獲取數據

Query s="select a.*,b.*,c.*......";//fetchin all data using joins in single query

Preparedstatement ps = con.prepareStatement(query);//con is a connection object
ResultSet res = ps.executeQuery();
//fetching data from resultset res
con.close(); 

2)我正在從每個單獨的表中獲取數據

Query s="select from table a";
Preparedstatement ps = con.prepareStatement(s);
ResultSet res = ps.executeQuery();
//fetching data from resultset res
Query s1="select from table b";
Preparedstatement ps1 = con.prepareStatement(s1);
ResultSet res1 = ps1.executeQuery();
//fetching data from resultset res1
.............
//continue for all remaining tables
con.close();           

我想知道是否還有其他/更好的方法。

編輯:我正在使用非常大量的數據。 Hibernet其他方法呢

我認為最好的方法是在一條語句中處理所有SQL內容。 如您建議的版本1)。 如果在Java源代碼中這對您來說太復雜了,那么您可以在數據庫中使用存儲的函數(我只知道Oracle / MySQL的可能性)並在那里處理更復雜的語句。 在Java中,您僅調用存儲的函數/過程並使用Java處理結果。 這對我來說很好。

另一種可能性是使用Hibernate之類的ORM。 但是對於小事情,這將是過分的:)

通過1),可以適當地與存儲的功能結合使用,但並非真正必要,您可以讓數據庫緩存您的語句並獲得imho最佳性能。 如果您在方法2)中一個接一個地加載表,則必須處理數據並將其存儲。 那可能不是那么有效。

實際鏈接了您的數據嗎? 還是它們是不同的概念數據集,例如您要在query1中加載“產品”,並說“尺寸,顏色,城鎮int查詢2、3和4”? 如果是后者,那么最好使用不同的查詢,以避免人為的JOIN構造引起的問題。

編輯-如果表確實相關,那么在使用有效查詢的情況下,JOINing聽起來很合適。 在SELECT中,請確保僅拉回您需要的字段(忽略“多余”的字段)以提高性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM