> > INSERT INTO Filename(Name)
> > SELECT DISTINCT Name
> > FROM batch AS a
> > WHERE NOT EXISTS
> > (
> >     SELECT Name
> >     FROM Filename AS f
> >     WHERE f.Name = a.Name
> > )
> 
> You may also want to consider using a JOIN rather than a subquery with
a
> NOT EXISTS, something like (untested and unvalidated!):
> 
> INSERT INTO filename(name)
> SELECT DISTINCT name
> FROM batch AS a
> LEFT JOIN filename AS f USING (name)
> WHERE f.name IS NULL
> 
> I know from experience as an Oracle DBA (my day job) that this can
often
> produce far more efficient results.
> 
> Of course, all options need testing for both speed of execution and
> resource usage, bearing in mind that data varies from one installation
to
> another, and one size may not fit all!

The subquery returns a very small result set (0 or 1, assuming you use
DISTINCT) and so isn't too inefficient. It's when you say 'WHERE NOT
EXISTS (SOME QUERY WITH LOTS OF RESULTS)' that you start to really bog
down

James

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to