How SQL derived tables work  SQL derived tables and optimization

Chapter 9: SQL Derived Tables

Advantages of SQL derived tables

If you are interested in viewing only the titles of books written in Colorado, you might create a view like the following:

create view vw_colorado_titles as
     select title
     from titles, titleauthor, authors
     where titles.title_id = titleauthor.title_id
     and titleauthor.au_id = authors.au_id 
     and authors.state ="CO"

You can repeatedly use the view vw_colorado_titles, stored in memory, to display its results:

select * from vw_colorado_titles

Once the view is no longer needed, it is dropped:

drop view vw_colorado_titles

If the query results are only needed once, you might instead use a SQL derived table:

select title 
from (select title
      from titles, titleauthor, authors
      where titles.title_id = titleauthor.title_id
      and titleauthor.au_id = authors.au_id and
      authors.state = "CO") dt_colo_titles

The SQL derived table created is named dt_colo_titles. The SQL derived table persists only for the duration of the query, in contrast with a temporary table, which exists for the entire session.

In the previous example for query results that are only needed once, a view is less desirable than a SQL derived table query because the view is more complicated, requiring both create and drop statements in addition to a select statement. The benefits of creating a view for only one query are additionally offset by the overhead of administrative tasks such as dealing with system catalogs. SQL derived tables eliminate this overhead by enabling queries to spontaneously create nonpersistent tables without needing to drop the tables or make insertions into the system catalog. Consequently, no administrative tasks are required. A SQL derived table used multiple times performs comparably to a query using a view with a cached definition.





Copyright © 2005. Sybase Inc. All rights reserved. SQL derived tables and optimization

View this book as PDF