簡體   English   中英

oracle sql 開發人員花時間獲取所有記錄

[英]oracle sql Developer taking time to fetch all records

我的查詢是在不到一秒的時間內為 Oracle SQL Developer 中的前 50 條記錄提供 output。 當我在查詢結果中使用 select all(Ctrl + A) 時,需要 120 秒才能獲取所有記錄(165k)。 如果有任何 scope 來優化這個,你能建議我嗎?

您能否解釋一下查詢是如何處理前 50 條結果記錄,然后是 rest 記錄的? SQL 引擎是從數據塊還是從結果緩存中獲取 rest 記錄?

非常感謝,阿西特

這里有很多因素可能是一個因素,最明顯的是記錄是什么。 165,000 條記錄並不是一個可笑的過大問題,但每條記錄有多大? 請記住,這些記錄必須從DB中讀取,通過網絡,然后由SQL Developer自己處理。

當我遇到這個問題時,您通常可以看到 sql 開發人員進程在嘗試在其使用的任何內部進程中獲取所有這些記錄時使 CPU 和 RAM 達到峰值。

對於一個簡單的查詢(比如select * from some_table ),我認為今天的每個 GUI 都會做同樣的事情 -快速獲取前“n”(50、100、500)行。 它返回一個無序集並說“給你,看看你得到了什么”。

但是,如果它稍微復雜一些,例如select count(*) from some_tableselect * From some_table order by col1 ,那么它必須獲取所有行,並且對於大型表需要時間。

此外,由於查詢go (連接、聚合、諸如此類),它也使它更復雜和更耗時。

那么 - 你會考慮多少時間來滿足165K 行? Ctrl + A確實需要時間。

SQL 開發人員在獲取前 50 條記錄后立即停止執行。 但是,您可以將其增加到 200。

在 SQL Developer, Go 到 Preferences —> Database —> Advanced —> SQL Array Fetch Size (在 50 和 020 之間) -->將值更改為0200

暫無
暫無

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

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