FBI Bug reprise
I’ve just had cause to resurrect a blog note I wrote three years ago. The note says that an anomaly I discovered in 9.2.0.8 wasfixed in 10.2.0.3 – and this is true for the simple example in the...
View ArticleBind Effects
A couple of days ago I highlighted an optimizer anomaly caused by the presence of an index with a descending column. This was a minor (unrelated) detail that appeared in a problem on OTN where the...
View ArticleParallel rownum
It’s easy to make mistakes, or overlook defects, when constructing parallel queries – especially if you’re a developer who hasn’t been given the right tools to make it easy to test your code. Here’s a...
View ArticleCounting
There’s a live example on OTN at the moment of an interesting class of problem that can require some imaginative thinking. It revolves around a design that uses a row in one table to hold the low and...
View ArticleParallel Execution
This is another little reference list I should have created some time ago. It covers a series of posts on interpreting parallel execution plans and understanding where the work happens.read more
View ArticleUnderstanding SQL
From time to time someone publishes a query on the OTN database forum and asks how to make it go faster, and you look at it and think it’s a nice example to explain a couple of principles because it’s...
View ArticlePredicate Order
A recent OTN post demonstrated a very important point about looking at execution plans – especially when you don’t use the right data types. The question was:We’ve this query which throws invalid...
View ArticleMissing Bloom
Here’s a little surprise that came up on the OTN database forum a few days ago. Rather than describe it, I’m just going to create a data set to demonstrate it, initially using 11.2.0.4 although the...
View ArticleExistence
A recent question on the OTN Database Forum asked:I need to check if at least one record present in table before processing rest of the statements in my PL/SQL procedure. Is there an efficient way to...
View ArticleIN/EXISTS bugs
Here’s a simple data set – I’m only interested in three of the columns in the work that follows, but it’s a data set that I use for a number of different models:read more
View ArticleFilter Hash
One of the most irritating features of solving problems for clients is that the models I build to confirm my diagnosis and test my solutions often highlight further anomalies, or make me ask questions...
View Article12c Scalar Subquery
Every version of the optimizer enhances existing mechanisms and introduces new features and 12c has introduced some of the most sophisticated transformation to date; in this note I want to demonstrate...
View ArticlePredicates
I received an email recently that started with the sort of opening sentence that I see far more often than I want to:I have come across an interesting scenario that I would like to run by you, for your...
View ArticleNLS Mess
The Oracle database has all sorts of little details built into it to help it deal with multi-national companies, but since they’re not commonly used you can find all sorts of odd “buggy” bits of...
View ArticleCTEs and Updates
An important target of trouble-shooting, particularly when addressing performance problems, is to minimise the time and effort you have to spend to get a “good enough” result. A recent question on the...
View ArticleSubquery Effects
Towards the end of last year I used a query with a couple of “constant” subqueries as a focal point for a blog note on reading parallel execution plans. One of the comments on that note raised a...
View ArticleSemijoin_driver
Here’s one of those odd little tricks that (a) may help in a couple of very special cases and (b) may show up at some future date – or maybe it already does – in the optimizer if it is recognised as a...
View ArticleParallel DML
A recent posting on OTN presented a performance anomaly when comparing a parallel “insert /*+ append */” with a parallel “create table as select”. The CTAS statement took about 4 minutes, the insert...
View ArticleConnect By
I received an email a couple of days ago that was a little different from usual – although the obvious answer was “it’s the data”. A connect by query with any one of several hundred input values ran in...
View Article