Cards means cardinality and shows for that specific operation the number of rows it will return. The costs columns is the cost, relative to this query only, of the operation. Usually, to begin tuning, you look to the high cost operations. For cardinality there is no right or wrong value, it is just a measure, however it can help indicate that your nested loop may be inverted (you are driving 10,000 - 1 row scans instead of 1 - 10,000 row scan). The cost value on the other hand should be as low as achievable.
Don Burleson adds:
Understand the execution plan is not a simple task, and there are some third-party tools that make "explain plans" easier to read.
The "cost" values depend heavily on your Oracle optimizer init.ora parameters: http://www.dba-oracle.com/art_otn_cbo_p1.htm.
It also depends on whether you are considering CPU costing too: http://www.dba-oracle.com/oracle_tips_optimizer_cost_model.htm.
The "card" column is the estimated number of rows returned in an intermediate table join (or group-by) operation, and it is important that Oracle join the tables together such that the amount of intermediate row baggage is minimized: http://www.dba-oracle.com/oracle_tips_histograms.htm.
For more details, I might suggest the Kimberly Floss book on Oracle CBO internals.
Dig Deeper on Oracle database design and architecture
Related Q&A from Mike Ault
How to find the definition or structure of a dropped table? I know the table's name but I don't know the columns and datatypes. It no longer exists. Continue Reading
I am trying to remove carriage returns at the end of clob fields in SQL*Plus. This just nulls out the field in the table. What do I need to change to... Continue Reading
I want to find the length of a numeric datatype field in my table. How can I find it? Continue Reading
Have a question for an expert?
Please add a title for your question
Get answers from a TechTarget expert on whatever's puzzling you.