Most popular articles in Gints Plivna blog

See also article list in my site.

SQL join types.
The initial draft of SQL join types classification

Natural joins are evil.
ANSI SQL Natural join syntax hides quite big potential problems although it seems very simple and elegant on the first sight. This article explains them and describes why it is better to avoid natural joins at all.

Where bad performance starts.
A small article about the art of requirements gathering. One of the main reasons for bad perfomance simply are bad requirements. Also contains a comprehensive list of pointers to articles about b-tree and bitmap indexes by Cary Millsap, Jonathan Lewis, Brian Hengen, Julian Dyke, Tim Gorman, and Richard Foote.

MINUS ALL and INTERSECT ALL in Oracle Revisited.
An article for attempt to simulate MINUS ALL and INTERSECT ALL using multiset operations.

Deferred constraint real life scenario.
One of the common reasons for deferred constraints are natural primary keys and as a consequence updateable foreign keys. There is another reason why you'd need issue
ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_restriction DEFERRABLE INITIALLY DEFERRED.

SQL Merge and Sequence gaps.
SQL Merge statement may cause quite big sequence gaps. As sequnces should be used just as unique number generators this is OK, but one should know that.

Hints stronger than db parameters?
Even if you set hash_join_enabled = false, hint use_hash forces hash join anyway.

Copyright notice:
These papers and notes are provided as-is and without warranty. It is your liability to use or not to use them. You may freely use every paper and note this page contains both for commercial and non-commercial purposes. You may even make derivative works. The only requirement is to preseve original author and site.
In legal terms all that is explained here: Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.

If you have something to add, comment or ask write me a message (replace at with @).