簡體   English   中英

AJAX / JavaScript搜索性能優於Java / Oracle

[英]AJAX/JavaScript search performance better than Java/Oracle

我使用一個用Java編寫的大型企業應用程序,該應用程序查詢Oracle SQL數據庫。 我們在前端使用JavaScript,並且一直在尋找通過增加使用量來改善應用程序性能的方法。

我們現在遇到的問題是,我們正在通過Java發送查詢,該查詢導致39,000條記錄。 這給服務器帶來了沉重的負擔,並導致瀏覽器掛起。 我應該提到數據是相對靜態的(每年僅更改一次),並且我們可以使用xml映射或類似的內容(平面文件),因為我們知道每次都會返回確切的結果。

但是,查詢仍然需要1.5-2分鍾才能加載,這是無法接受的。 我想看看是否有關於如何優化此方案的建議,尤其是如果可以使用JavaScript(或jQuery)並使用AJAX進行數據庫連接來更快地完成該方案。 還是我們要解決這個問題全錯了?

您要確定是否緩慢是由於:

  1. 在數據庫中執行的查詢
  2. 網絡返回39k條記錄的速度很慢
  3. Ajax完成后,使用39k記錄的JavaScript

如果您可以在sqlplus或toad中運行查詢,則將消除Web層和網絡。 如果這很慢,則通過檢查索引來調整查詢。

如果添加適當的索引后查詢仍然很慢,那么您可以預先構建查詢的結果並將結果存儲在表中,也可以創建實例化視圖。

一旦您的查詢在sqlplus中表現良好,就將網絡重新添加到等式中。 從Web瀏覽器運行它,然后查看正在增加的開銷。

如果仍然很慢,那么您需要確定問題是由於干擾數據還是頁面在對數據執行某些操作(即通過javascript填充數據網格)之后發生的。

如果速度慢是因為瀏覽器正在等待數據,那么您要確保僅提取一次數據。 您可以通過在ajax請求中設置緩存標頭以將結果緩存1年來實現。 或者,您可以將結果存儲在localstorage

如果速度慢是由於瀏覽器處理了39k行(例如,將數據移入數據網格),那么您有幾種選擇。

  1. 找到更好的方法或庫
  2. 使用分頁

您可能會在每個方面發現性能問題。 很有可能只需要調整查詢,通過添加索引或預先查詢數據並將其存儲將解決該問題。

要考慮的另一件事是,一次是否真的需要39k行。 如果可以,請在數據庫級別上分頁,以便每頁返回100行。

暫無
暫無

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

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