簡體   English   中英

其中column為null,需要更長的時間執行

[英]where column is null taking longer time to execute

我正在執行一個select語句,例如下面的語句,該語句需要6分鍾以上的時間才能執行。

select * from table where col1 is null;

而:

select * from table;

在幾秒鍾內返回結果。 該表包含2500萬條記錄。 不使用索引。 有一個復合PK,但沒有在所使用的列上顯示。 在具有5000萬條記錄的不同表上執行同一查詢時,將在幾秒鍾內返回結果。 僅此表構成問題。

重建表以檢查是否有遺漏,但仍然面臨相同的問題。

有人可以幫我解決為什么要花時間嗎? 數據類型:VARCHAR2(40)計划:

Plan hash value: 2838772322

---------------------------------------------------------------------------------------------------
| Id  | Operation                 | Name                  | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT          |                       |     1 |   794 | 60973  (16)| 00:00:03 |
|*  1 |  TABLE ACCESS STORAGE FULL| table                 |     1 |   794 | 60973  (16)| 00:00:03 |
---------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - storage("column" IS NULL)
       filter("column" IS NULL)
select * from table;

Oracle SQL Developer工具的默認設置為僅顯示50條記錄,除非對其進行了手動編輯。 因此,由於您不需要顯示所有記錄,因此不會提取全部2500萬條記錄。

select * from table where col1 is null;

但是,當您篩選空值時,必須掃描整個2500萬行的集合以應用篩選器,並獲得滿足該謂詞的81條記錄。 因此,您的第二個查詢需要更長的時間。

暫無
暫無

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

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