WEB开发网
开发学院数据库MSSQL Server SQL开发中容易忽视的一些小地方(二) 阅读

SQL开发中容易忽视的一些小地方(二)

 2009-01-15 10:19:38 来源:WEB开发网   
核心提示: 第一:将数据量较大的学生表放在前面.--大表在前select top 1000 a.sUserName,b.sClassName from student ainner join classInfo b on a.classID=b.classID第二:将数据量较小的班级表放在前面.--小

第一:将数据量较大的学生表放在前面.

--大表在前

select top 1000 a.sUserName,b.sClassName from student a
 inner join classInfo b on
  a.classID=b.classID

第二:将数据量较小的班级表放在前面.

--小表在前

select top 1000 a.sUserName,b.sClassName from classInfo b
 inner join student a on
  a.classID=b.classID

第三:用where 实现.

--join与where

select top 1000 a.sUserName,b.sClassName from classInfo b, student a
where a.classID=b.classID

归纳:以上三种方式查询的结果都完全相同,但它们在实现效率上会有不同吗?这里首先提出两个网络上的观点:

网络观点一:一般要使得数据库查询语句性能好点遵循一下原则:在做表与表的连接查询时,大表在前,小表在后.

执行计划效果如图一:

SQL开发中容易忽视的一些小地方(二)

网络观点一结论:从图上可以非常清楚的看出,三者在执行计划上完成一样.为此本人并不同意网络观点一.表在前与后并不影响最终的执行效率.大家有什么不同的意见望指教.

说明:

1:WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接.INNER JOIN称为显性连接.WHERE 和INNER JOIN产生的连接关系,没有本质区别,结果也一样.但是!隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了.

2:join的分类:

1> inner join:理解为"有效连接",

上一页  1 2 3 4  下一页

Tags:SQL 开发 容易

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接