クエリ・オプティマイザは結果のロー数を、テーブルのサイズと WHERE句中の特定の制約によって推測しているため、推測値はほとんど常に不正確です。多くの場合、クエリ・オプティマイザの推測値は、オプティマイザが最適の方式として実際に選ぶローの数に十分近くなっていますが、例外もあります。
【推測値の使い方】
成功率がオプティマイザの推測値と異なることがわかっているときは、推測値を使ってデータベースにそれを通知することができます。推測値は WHERE句中の制約の式の後にカンマと数値を入れ、() で囲んで作成します。数値はその式が選択すると思われるローのパーセンテージです。この例では成功率を 1% とします。
SELECT ship_date
FROM sales_order
WHERE ( ship_date > '2001/06/30', 1 )
ORDER BY ship_date DESC
誤ったクエリプランが選択されている場合、推測値を指定することで、クエリのパフォーマンスを向上させることができます。
ただ、推測値を指定することが必ずしもパフォーマンスの向上につながるわけではありませんし、また、データの増加に伴い違うクエリプランのほうがパフォーマンスがいいような場合も出てくるかもしれません。
使用に当たってはその辺を十分に検討のうえ使用されることをお勧めいたします。