Saturday, July 23, 2011

Is there a limit to the number of tables we can join in Oracle?

Question: How many tables can we join in Oracle?

There is no hard limit on the number of tables that you can join in a single query in Oracle. There is likely to be a limit to your comprehension of a SQL statement that is joining many tables though! The more complex the SQL the harder it is to understand and the harder it is to optimise and to maintain.

Generally, the more tables that are involved in a join in Oracle the slower the query will be as all the data has to be read from the tables (and/or indexes) and then sorted and merged to generate the final result. The more data that needs to be sorted, the more memory is required for sorting and the more likely it is that the sorting will have ti be done on disk (which is slower than doing it in memory).

If you're using PL/SQL then there is a hard limit of about 6,000,000 lines of code (including your embedded SQL statements) and a limit of 254 for sub-query nesting.

A SQL query that requires a large number of tables to be joined may be indicative of a design flaw in your database design for OLTP systems. With Oracle datawarehouses you are likely to see perhaps 6 or more tables being joined in what's known as a star query where a central fact table (sales, for example) is joined with multiple satellite dimension tables such as time, location, organisation, product etc depending on how many dimensions an organisation has.

Therefore, overall there are no practical limits on how many tables you can join in a query in Oracle but joining a large number of tables may lead to performance issues and may indicate that the system and database designs have not been optimised.

0 comments:

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Deep's | Bloggerized by Deep - Deep's Templates | ElearSQL-Server