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