`

看你知道不知道之-你注意Where子句的次序了吗?

阅读更多
这个系列越来越多的是和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 Server查询语句学习心得.pdf

    SQL Server查询语句的基础语法主要包括选择列表(SELECT),FROM子句和WHERE子句。此外,还有用于排序的ORDER BY子句。这些子句的顺序通常为:SELECT - FROM - WHERE - ORDER BY。其中,SELECT和FROM是必须出现的,...

    MYSQL查询语句解析

    **WHERE** 子句用于设置查询的筛选条件,过滤出符合特定条件的数据行。 - 示例:`SELECT * FROM usertable WHERE age > 20;` - WHERE 子句可以包括多种类型的条件运算符: - **比较运算符**:如 `>`, `>=`, `=`,...

    sql语句收藏-精华.doc

    WHERE 子句设置了查询条件,过滤掉不需要的数据行。例如,SELECT \* FROM usertable WHERE age>20 语句查询年龄大于 20 的数据。 WHERE 子句可以使用各种运算符和函数,例如,SELECT \* FROM usertable WHERE age ...

    数据库基本格式及操作

    - `WHERE` 子句:设定查询条件。 - `GROUP BY` 子句:对查询结果进行分组。 - `HAVING` 子句:对分组后的数据进行进一步筛选。 - `ORDER BY` 子句:对查询结果进行排序。 **示例数据库:学生-课程数据库** 假设有...

    PLSQL优化规则小结

    WHERE子句中查询列与索引列次序一致 - **原规则**:在WHERE子句中,查询列的顺序应与索引列的顺序保持一致。 - **优化方法**:这样可以确保索引的有效使用。 - **案例对比**: - 错误示例:`WHERE job = 'MANAGER...

    SQL查询语句使用详解,[收集].pdf

    WHERE 子句设置查询条件,过滤掉不需要的数据行。 * 比较运算符:WHERE 子句可包括各种条件运算符:>、>=、=、、、、!>、! * 范围运算符:WHERE 子句也可包括范围运算符,例如 BETWEEN … AND …、NOT ...

    2021-2022计算机二级等级考试试题及答案No.1726.docx

    常见的视图设计次序包括自顶向下、由内向外和自底向上,不包括由外向内。 ### 19. Internet概述 - **题目**: Internet在中国被称为什么? - **解析**: 正确答案是**国际互联网**。Internet是一种全球性的计算机网络...

    SQL COOKBOOK(压缩1/2)

    1.6在WHERE子句中引用取别名的列 1.7连接列值 1.8在SELECT语句中使用条件逻辑 1.9限制返回的行数 1.10从表中随机返回n条记录 1.11查找空值 1.12将空值转换为实际值 1.13按模式搜索 第2章 查询结果排序 2.1...

    SQL COOKBOOK(压缩2/2)

    1.6在WHERE子句中引用取别名的列 1.7连接列值 1.8在SELECT语句中使用条件逻辑 1.9限制返回的行数 1.10从表中随机返回n条记录 1.11查找空值 1.12将空值转换为实际值 1.13按模式搜索 第2章 查询结果排序 2.1...

    SQL语句查询

    本文将深入探讨SQL查询语句的几个关键组成部分:简单查询、FROM子句、WHERE子句以及联合查询。 1. **简单查询** - **选择列表**:允许指定要查询的列。可以使用`*`代表所有列,或指定特定列名。如`SELECT nickname...

    SQL查询教程[文].pdf

    本文将深入讲解SQL查询的基本组成部分,包括选择列表、FROM子句和WHERE子句。 首先,选择列表(select_list)决定了你想要查询的哪些列。你可以选择所有列(使用*),部分列,或者指定列的显示次序。例如,`SELECT ...

    SQL Server查询语句大全集锦.docx

    简单查询是SQL Server中最基本的查询形式,主要包括选择列表、FROM子句和WHERE子句。这些元素共同定义了查询的目标表、需要检索的列以及任何筛选条件。 ##### (一)选择列表 **选择列表**(select_list)指定了...

    简单数据库查询语句(word文档良心出品).doc

    - **WHERE 子句**:用于设定过滤条件,以决定哪些行将被包含在最终结果集中。 **示例**:查询 `testtable` 表中姓名为“张三”的 `nickname` 字段和 `email` 字段。 ```sql SELECT nickname, email FROM testtable ...

    SQL数据库查询语句精华.doc

    WHERE 子句设置查询条件,过滤掉不需要的数据行。例如: SELECT * FROM usertable WHERE age>20 WHERE 子句可包括各种条件运算符: * 比较运算符:>、>=、=、<、、、!<、!> * 范围运算符:BETWEEN…AND…、NOT ...

    SQL查询语句大全集锦.docx

    WHERE 子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于 20 的数据: 代码:SELECT * FROM usertable WHERE age>20 WHERE 子句可包括各种条件运算符: * 比较运算符(大小比较):>、>=、=、<、...

    SQLserver查询语句大全

    WHERE 子句可包括各种条件运算符:比较运算符(大于、小于、等于、不等于等)、逻辑运算符(AND、OR、NOT)、like 运算符等。 四、 ORDER BY 子句 ORDER BY 子句用于对查询结果进行排序。例如: ``` SELECT * ...

    2009达内SQL学习笔记

    六、WHERE子句,选择、过滤 其后只能跟逻辑语句,返回值只有ture或false 如: select last_name,salary from s_emp where salary=1000;--找出工资1000的人 WHERE子句操作符: 1、逻辑比较运算符 = 等于 != ...

    sql查询大全

    WHERE 子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于 20 的数据: 代码:SELECT * FROM usertable WHERE age>20 WHERE 子句可包括各种条件运算符:比较运算符(大小比较):>、>=、=、<、、!...

Global site tag (gtag.js) - Google Analytics