- 浏览: 257273 次
文章分类
- 全部博客 (395)
- Tech (0)
- [随笔分类]心情 (95)
- [随笔分类]技术 (112)
- [随笔分类]管理心得 (13)
- [随笔分类]Code SOP (5)
- [随笔分类]望图知意 (11)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (8)
- [随笔分类]重构代码 (1)
- [随笔分类]童童 (2)
- Program (1)
- [随笔分类]看你知道不知道 (1)
- [网站分类]4.其他技术区 (31)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (21)
- [网站分类]9.求职招聘区(个人求职、企业招聘) (0)
- [随笔分类]昨日关注 (15)
- [网站分类]6.读书区(技术书籍阅读心得、书籍推荐) (3)
- [随笔分类]一步一个脚印 (2)
- [网站分类]网站管理区(网站管理方面的疑问、建议、意见, 寻求管理员帮助) (1)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (3)
最新评论
这个系列越来越多的是和SQL语句相关的问题了,因为这段时间工作和这个有关,呵呵,不管那么多了,反正,都是和开发相关的问题,就继续吧。
我们通常不太注意SQL语句中Where子句的次序问题,但是这个次序往往会影响整个SQL语句的执行性能,举个例子吧。
比如有一个表有3个列,分别是班级、学号、姓名。
表中的数据共100条,其中1班50人,学号从1到50,二班50人,学号从1到50。
那么现在的任务是在表中找到1班学号为10的学生,查询语句就有两种写法。
1:Select 姓名 From 学生表 Where 班级=1 And 学号=10
2:Select 姓名 From 学生表 Where 学号=10 And 班级=1
虽然返回的结果一样,但是这两个到底那个好呢?
衡量一个Sql语句好与坏,主要看性能,而影响Select语句的通常是Table Scan,我们来看看到底执行了几次Table Scan。
1:100+50=150,首先扫描全表找到50个1班的,然后早扫描50次找到学号为10的。
2:100+2=102,首先扫描全表找到2个10号的,然后扫描2次找到班级为1班的。
呵呵,这就说明在Where子句中应该先处理查询范围大的,然后处理查询范围小的,就像开车下坡是越来越快的。
当然这个也并不绝对,因为如果优化了索引,Table Scan就会减轻,并根据索引进行Where子句的优化,但是无论是否索引,我们都应该养成这个好习惯,难道不是吗?
我们通常不太注意SQL语句中Where子句的次序问题,但是这个次序往往会影响整个SQL语句的执行性能,举个例子吧。
比如有一个表有3个列,分别是班级、学号、姓名。
表中的数据共100条,其中1班50人,学号从1到50,二班50人,学号从1到50。
那么现在的任务是在表中找到1班学号为10的学生,查询语句就有两种写法。
1:Select 姓名 From 学生表 Where 班级=1 And 学号=10
2:Select 姓名 From 学生表 Where 学号=10 And 班级=1
虽然返回的结果一样,但是这两个到底那个好呢?
衡量一个Sql语句好与坏,主要看性能,而影响Select语句的通常是Table Scan,我们来看看到底执行了几次Table Scan。
1:100+50=150,首先扫描全表找到50个1班的,然后早扫描50次找到学号为10的。
2:100+2=102,首先扫描全表找到2个10号的,然后扫描2次找到班级为1班的。
呵呵,这就说明在Where子句中应该先处理查询范围大的,然后处理查询范围小的,就像开车下坡是越来越快的。
当然这个也并不绝对,因为如果优化了索引,Table Scan就会减轻,并根据索引进行Where子句的优化,但是无论是否索引,我们都应该养成这个好习惯,难道不是吗?
发表评论
-
打包应该注意MDAC的安装次序
2005-11-14 16:06 960MDAC得打包通常都是很讨厌得,一直没有太好的办法。以前得解决 ... -
不要忽视细节,由调用一个SqlServer系统存储过程想到的
2005-11-22 13:21 623今天在调用SqlServer中的系统存储过程sp_droplo ... -
小毛病,大问题
2005-11-24 11:19 620今天用户抱怨,为什么数据库中条目的计数越来越大,而且清空数据库 ... -
CMD命令也要用好
2005-11-30 13:30 994以前一些程序需要执行 ... -
一步一个脚印-产品升级随笔(1)-vision
2005-12-18 08:17 679产品的维护和升级总是困扰着我,犯过很多的错误,吃过很多的亏,如 ... -
一步一个脚印-产品升级随笔(4)-波浪
2005-12-30 11:10 697产品的升级不是一次就可以完成的,需求会像洪水一样永远都不会停止 ... -
国民党的800万军队不是一天消灭的
2006-01-09 15:58 619这几天又去了一趟京城,刚刚回到家里,特别的疲惫,昨天美美的在家 ... -
还不如扔掉
2006-01-12 12:42 587周六、周日打算搬回学校的单身宿舍了,把租的房子退掉,但是屋子里 ... -
看你知道不知道之-全局对象
2006-02-10 12:49 652这几天在整理类库,想通过VB6来提供全局函数,将公司常用的函数 ... -
看你知道不知道之-制作数据字典
2006-02-10 17:49 1015这部分内容和VB6的关系不大,但是确是困扰我的一个问题。 这几 ... -
看你知道不知道之-为进程内部件设置基地址
2006-02-13 11:17 694在用Project Analyzer 进行 ... -
看你知道不知道之-Call转义序列
2006-02-14 13:00 654今天在整理代码的时候,需要修改一个函数,使这个函数可以通过AD ... -
看你知道不知道之-使用SET NOCOUNT优化存储过程
2006-02-15 14:51 767每次我们在使用查询分析器调试SQL语句的时候,通常会看到一些信 ... -
看你知道不知道之-用好sp_depends
2006-02-21 12:25 1141前几天检查一个兄弟写的存储过程,我想知道这个存储过程到底涉及到 ... -
今天20,明天21
2006-03-06 15:58 564这几天一直封闭,昨天刚刚放出来,感觉十分的疲惫。在封闭的过程中 ... -
重构代码-随笔(1)
2006-03-09 10:32 576原始代码: If txt ... -
干这行最重要的是要坐住板凳
2006-03-12 20:40 726我们周五的时候刚刚辞退的一个试用期员工,给我在QQ留言,内容大 ... -
看你知道不知道之-别惹我Msgbox的Title
2006-03-13 19:40 606在VB6中,MsgBox是比较讨厌的,我在整理代码的时候,通常 ... -
Windows Server 2003 R2 修复Windows Server 2003
2006-03-19 13:05 1185最近特别喜欢去反波上听平客的段子,有一些也下载到本地了,但是我 ... -
靠左侧通行
2006-03-23 08:15 742从小老师和父母就告诉我,一定要靠人行横道的右侧通行,我也是 ...
相关推荐
SQL Server查询语句的基础语法主要包括选择列表(SELECT),FROM子句和WHERE子句。此外,还有用于排序的ORDER BY子句。这些子句的顺序通常为:SELECT - FROM - WHERE - ORDER BY。其中,SELECT和FROM是必须出现的,...
**WHERE** 子句用于设置查询的筛选条件,过滤出符合特定条件的数据行。 - 示例:`SELECT * FROM usertable WHERE age > 20;` - WHERE 子句可以包括多种类型的条件运算符: - **比较运算符**:如 `>`, `>=`, `=`,...
WHERE 子句设置了查询条件,过滤掉不需要的数据行。例如,SELECT \* FROM usertable WHERE age>20 语句查询年龄大于 20 的数据。 WHERE 子句可以使用各种运算符和函数,例如,SELECT \* FROM usertable WHERE age ...
- `WHERE` 子句:设定查询条件。 - `GROUP BY` 子句:对查询结果进行分组。 - `HAVING` 子句:对分组后的数据进行进一步筛选。 - `ORDER BY` 子句:对查询结果进行排序。 **示例数据库:学生-课程数据库** 假设有...
WHERE子句中查询列与索引列次序一致 - **原规则**:在WHERE子句中,查询列的顺序应与索引列的顺序保持一致。 - **优化方法**:这样可以确保索引的有效使用。 - **案例对比**: - 错误示例:`WHERE job = 'MANAGER...
WHERE 子句设置查询条件,过滤掉不需要的数据行。 * 比较运算符:WHERE 子句可包括各种条件运算符:>、>=、=、、、、!>、! * 范围运算符:WHERE 子句也可包括范围运算符,例如 BETWEEN … AND …、NOT ...
常见的视图设计次序包括自顶向下、由内向外和自底向上,不包括由外向内。 ### 19. Internet概述 - **题目**: Internet在中国被称为什么? - **解析**: 正确答案是**国际互联网**。Internet是一种全球性的计算机网络...
1.6在WHERE子句中引用取别名的列 1.7连接列值 1.8在SELECT语句中使用条件逻辑 1.9限制返回的行数 1.10从表中随机返回n条记录 1.11查找空值 1.12将空值转换为实际值 1.13按模式搜索 第2章 查询结果排序 2.1...
1.6在WHERE子句中引用取别名的列 1.7连接列值 1.8在SELECT语句中使用条件逻辑 1.9限制返回的行数 1.10从表中随机返回n条记录 1.11查找空值 1.12将空值转换为实际值 1.13按模式搜索 第2章 查询结果排序 2.1...
本文将深入探讨SQL查询语句的几个关键组成部分:简单查询、FROM子句、WHERE子句以及联合查询。 1. **简单查询** - **选择列表**:允许指定要查询的列。可以使用`*`代表所有列,或指定特定列名。如`SELECT nickname...
本文将深入讲解SQL查询的基本组成部分,包括选择列表、FROM子句和WHERE子句。 首先,选择列表(select_list)决定了你想要查询的哪些列。你可以选择所有列(使用*),部分列,或者指定列的显示次序。例如,`SELECT ...
简单查询是SQL Server中最基本的查询形式,主要包括选择列表、FROM子句和WHERE子句。这些元素共同定义了查询的目标表、需要检索的列以及任何筛选条件。 ##### (一)选择列表 **选择列表**(select_list)指定了...
- **WHERE 子句**:用于设定过滤条件,以决定哪些行将被包含在最终结果集中。 **示例**:查询 `testtable` 表中姓名为“张三”的 `nickname` 字段和 `email` 字段。 ```sql SELECT nickname, email FROM testtable ...
WHERE 子句设置查询条件,过滤掉不需要的数据行。例如: SELECT * FROM usertable WHERE age>20 WHERE 子句可包括各种条件运算符: * 比较运算符:>、>=、=、<、、、!<、!> * 范围运算符:BETWEEN…AND…、NOT ...
WHERE 子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于 20 的数据: 代码:SELECT * FROM usertable WHERE age>20 WHERE 子句可包括各种条件运算符: * 比较运算符(大小比较):>、>=、=、<、...
WHERE 子句可包括各种条件运算符:比较运算符(大于、小于、等于、不等于等)、逻辑运算符(AND、OR、NOT)、like 运算符等。 四、 ORDER BY 子句 ORDER BY 子句用于对查询结果进行排序。例如: ``` SELECT * ...
六、WHERE子句,选择、过滤 其后只能跟逻辑语句,返回值只有ture或false 如: select last_name,salary from s_emp where salary=1000;--找出工资1000的人 WHERE子句操作符: 1、逻辑比较运算符 = 等于 != ...
WHERE 子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于 20 的数据: 代码:SELECT * FROM usertable WHERE age>20 WHERE 子句可包括各种条件运算符:比较运算符(大小比较):>、>=、=、<、、!...