Many times you're required to write query to
determine if a record exists. Typically you use this to determine
whether to insert or update a records. Using the
Here's a simple example from the pubs database using EXISTS:
The other benefit of EXISTS is that once it finds a single record that matches it stops processing. This doesn't have a huge impact if you're checking on a primary key. It does have a big impact if you're checking for existance based on another field. Consider the following two queries:
EXISTS
keyword is a great way to accomplish this. Here's a simple example from the pubs database using EXISTS:
if EXISTS (select * from authors where au_id = '172-32-1176') Print 'Record exits - Update' ELSE Print 'Record doesn''t exist - Insert'
The
EXISTS
function takes one parameter which is a SQL
statement. If any records exist that match the criteria it returns
true, otherwise it returns false. This gives you a clean, efficient way
to write a stored procedure that does either an insert or update.
The other benefit of EXISTS is that once it finds a single record that matches it stops processing. This doesn't have a huge impact if you're checking on a primary key. It does have a big impact if you're checking for existance based on another field. Consider the following two queries:
if exists (select * from authors where state = 'ca') Print 'Record exits' ELSE Print 'Record doesn''t exist' if (select count(*) from authors where state = '172-32-1176') > 0 Print 'Record exits' ELSE Print 'Record doesn''t exist'
In the pubs database there are only 23 records in the authors table. Even with that small number of records, the IF EXISTS version runs 4 times faster than selecting a count. This is because it stops as soon as it finds a single record that matches the criteria. The second statement must process all the rows that match.
No comments:
Post a Comment