簡體   English   中英

對PL / SQL Developer中的SQL成本感到困惑

[英]Confused about the cost of SQL in PL/SQL Developer

Select pn.pn_level_id From phone_number pn Where pn.phone_number='15183773646'


Select pn.pn_level_id From phone_number pn Where pn.phone_number=' 15183773646'

您是否認為它們相同? 否。基本上,它們在PL / SQL Devloper中是不同的。

在此處輸入圖片說明在此處輸入圖片說明

我想知道為什么后一個的成本比前一個sql小。 任何幫助,將不勝感激!

成本不一樣,因為計划者在計算成本時會考慮可用的統計信息。 統計信息除其他外還包含在頻率中頻率最高的值。 它使計划人員可以更好地估計將要提取的行數,並決定如何更好地獲取數據(例如,通過順序掃描或按索引)。

在您的情況下,值15183773646可能是最經常出現的值,這就是為什么計划程序估計與其所猜測的其他值相比,與之相關的查詢的計划程序估計不同(因為計划程序對此類行數的估計更好)。

優化程序會評估所有方法來提取數據,因為您的數據庫沒有pn.phone_number=' 15183773646'並且該值未存儲在索引中,因此Oracle跳過了一個I / O操作,這就是第二個成本較低的原因。

暫無
暫無

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

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