[英]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.