Subquery Anomaly
Here’s an oddity that appeared on the OTN database forum last night:We have this query in our application which works fine in 9i but fails in 11gR2 (on Exadata) giving an “ORA-00937: not a single-group...
View ArticleParallel Execution – 5
In the last article (I hope) of this series I want to look at what happens when I change the parallel distribution method on the query that I’ve been using in my previous demonstrations. This was a...
View ArticleParallel Plans
I’ve popped this note to the top of the stack because I’ve added an index to Randolf Geist’s series on parallel execution skew, and included a reference his recent update to the XPLAN_ASH utility.This...
View ArticleNL History
Even the simplest things change – here’s a brief history of nested loop joins, starting from 8i, based on the following query (with some hints): select t2.n1, t1.n2 from t2,t1 where t2.n2 = 45 and...
View ArticleCosting Bug
It’s amazing how you can find little bugs (or anomalies) as soon as you start to look closely at how things work in Oracle. I started to write an article for All Things Oracle last night about...
View ArticleExecution Plans
This is the index to a series of articles I’ve been writing for redgate, published on their AllThingsOraclesite, about generating and reading execution plans. I’ve completed a few articles that haven’t...
View ArticleSubquery with OR
Prompted by a pingback on this post, followed in very short order by a related question (with a most gratifying result) on Oracle-L, I decided to write up a note about another little optimizer...
View ArticleExecution Plans
This is the index to a series of articles I’ve been writing for redgate, published on their AllThingsOraclesite, about generating and reading execution plans. I’ve completed a few articles that haven’t...
View ArticleDelete Costs
One of the quirky little anomalies of the optimizer is that it’s not allowed to select rows from a table after doing an index fast full scan (index_ffs) even if it is obviously the most efficient (or,...
View ArticleDelete Costs
One of the quirky little anomalies of the optimizer is that it’s not allowed to select rows from a table after doing an index fast full scan (index_ffs) even if it is obviously the most efficient (or,...
View ArticleOrder of Operation
One response to my series on reading execution plans was an email request asking me to clarify what I meant by the “order of operation” of the lines of an execution plan. Looking through the set of...
View ArticleGroup By Bug
This just in from OTN Database Forum – a surprising little bug with “group by elimination” exclusive to 12c. alter session set nls_date_format='dd-Mon-yyyy hh24:mi:ss'; select /*...
View ArticleQuiz Night
I have a table with several indexes on it, and I have two versions of a query that I might run against that table. Examine them carefully, then come up with some plausible reason why it’s possible...
View Article12c Fixed Subquery
It’s been about 8 months since I posted a little note about a “notable change in behaviour” of the optimizer when dealing with subqueries in the where clause that could be used to return a constant,...
View ArticlePlan depth
A recent posting on OTN reminded me that I haven’t been poking Oracle 12c very hard to see which defects in reporting execution plans have been fixed. The last time I wrote something about the problem...
View Articlefirst_rows(10)
No, not the 10th posting about first_rows() this week – whatever it may seem like – just an example that happens to use the “calculate costs for fetching the first 10 rows” optimizer strategy and does...
View ArticleUpgrades
One of the worst problems with upgrades is that things sometimes stop working. A particular nuisance is the execution plan that suddenly stops appearing, to be replaced by an alternative plan that is...
View ArticleParallel Fun
As I write, there’s an ongoing thread on Oracle-L that started with the (paraphrased) question: “I’ve got this query that returns 7 million rows; when I change it to ‘select count(*)’ it returns in 4...
View ArticleTable Duplication
I’ve probably seen a transformation like the following before and I may even have written about it (though if I have I can’t the article), but since it surprised me when I was experimenting with a...
View ArticleMost Recent
There’s a thread on the OTN database forum at present asking for advice on optimising a query that’s trying to find “the most recent price” for a transaction given that each transaction is for a stock...
View Article