==================================================================
1. 'or' should be written with a union
for e.g. instead of writing where a=1 or b=3
write
where a=1 union
b=3
2. relational operator replace with between
for e.g. instead of writing where a>2 and b<5
write
where a between 2
and 5
==================================================================
3. There shouldn't be any formulae along with the attributes in where clause
for e.g. where 2*a=40
this should be removed wherever
found.
==================================================================
4. Avoid using Join if it is not necessary
for e.g. suppose SID attribute in table Sailors is a primary
key that refers to another attribute SID in table Reserved
so the query is
–
select
S.SID from Sailors S, Reserved R where S.SID=R.SID
instead of writing this the query
should be changed to
select
R.SID from Reserve R;
5. Avoid the keyword DISTINCT if it is not necessary for
e.g.
select distinct ssnum from Employee where dept =
'Information Technology'
here there is no need of writing
DISTINCT keyword because ssnum is itself a primary key.
for e.g. there are 2 tables Employee and Techdept
and the query is
Select ssnum from Employee where dept in (Select dept from
Techdept);
instead of writing this we can write
select ssnum from Employee, Techdept
where Employee.dept = Techdept.dept;
==================================================================
7. Avoid using temporary relations if not necessary but where there is necessity there it should be used like-
a query for finding all information department employees
who earn more than $40000 is written as
Select * into Temp from Employee where Salary > 40000;
then the next query is
Select ssnum from Temp where Temp.dept = 'Information
Systems';
so there is no need for using aTemp
here and it can be changed to
Select
ssnum from Employee where Employee.dept = 'Information System' and
Salary>40000;
==================================================================
8. If a query is long then break it into parts for e.g.
select * from T1 T2 where
<condition1> group by <attribute> having <condition2>....
this should be written as
where select * from T1 T2 where
<condition2> 11
it will automatically group and show no need of writing
group by.
No comments:
Post a Comment