在Oracle中
1.sql语句是从右到左执行,所以先写大表的数据,再写小表的数据,大表数据过滤完了,可能就不满足小表的条件了,减少表的查询,提高效率。如图,第一条优于第二条的写法。(从右到左,先大表后小表)。
A表数据多,B表数据小
1.select * from B and A WHERE a.id=b.id
2.select * from A and B WHERE a.id=b.id
2.sql语句是从右到左执行,先写精确的条件(过滤值最大的条件),再写模糊的条件(过滤值小的条件),精确条件会走索引。如图,第一条优于第二条的写法。
1.select * from A WHERE age>20 and name='张三'
2.select * from A WHERE name='张三' and age>20
在sqlserver中
1.创建一个查询的存储过程
--创建一个返回结果集的存储过程(proc或者procedure均可)
if (object_id('proc_get_a', 'P') is not null)--判断存储过程是否存在 另外一种 if (exists (select * from sys.objects where name = 'proc_get_a'))//
drop proc proc_get_a --删除存储过程
go
create proc proc_get_a --创建存储过程
as
select * from a; --结果集
--调用执行存储过程,得到返回集(exec或者execute均可)
exec proc_get_a;