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'm having a problem with dynamic SQL, specifically getting my incoming parameter into the SQL statement. I am using Oracle 9i and this procedure ... 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.