`
darrenzhu
  • 浏览: 797327 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL语句的where字句表达式顺序影响性能吗?

阅读更多
比如下面的SQL语句性能有区别吗?
select * from PEOPLE where FirstName="F" and LastName="L"
select * from PEOPLE where LastName="L" and FirstName="F"

答案是顺序没有影响,因为SQL引擎自己会执行最优的计划,顺序由SQL引擎处理,并不是你写的这个顺序,真正影响性能的是你有没有建立合适的索引,比如有没有索引,是FirstName和LastName上分别有索引,还是有复合索引(FirstName, LastName)等?

Does order of where clauses matter in SQL
http://stackoverflow.com/questions/11436469/does-order-of-where-clauses-matter-in-sql
No, that order doesn't matter (or at least: shouldn't matter).

Any decent query optimizer will look at all the parts of the WHERE clause and figure out the most efficient way to satisfy that query.

I know the SQL Server query optimizer will pick a suitable index - no matter which order you have your two conditions in. I assume other RDBMS will have similar strategies.

What does matter is whether or not you have a suitable index for this!

In the case of SQL Server, it will likely use an index if you have:

an index on (LastName, FirstName)
an index on (FirstName, LastName)
an index on just (LastName), or just (FirstName) (or both)
On the other hand - again for SQL Server - if you use SELECT * to grab all columns from a table, and the table is rather small, then there's a good chance the query optimizer will just do a table (or clustered index) scan instead of using an index (because the lookup into the full data page to get all other columns just gets too expensive very quickly).


Does the order of fields in a WHERE clause affect performance in MySQL?
http://stackoverflow.com/questions/4035760/does-the-order-of-fields-in-a-where-clause-affect-performance-in-mysql
分享到:
评论

相关推荐

    Hibernate HQL查询语句总结.docx

    * HQL 语句可以使用 where 字句,并可以在 where 字句中使用各种表达式、比较操作符、 Logical 操作符等。 * HQL 语句可以用于查询继承关系中的实体对象,例如:from Employee,可以检索出所有 Employee 类型实体...

    SQL优化.pdf

    另外,在where字句中应尽量避免对字段进行null值判断。使用is null或is not null可能会导致数据库引擎放弃使用索引而进行全表扫描。对于可能会出现null值的列,可以在列上设置默认值,如0,然后使用等值查询而非null...

    sql命令优化小窍门

    * 在查询 Select 语句中使用 Where 字句限制返回的行数,避免表扫描。 * 避免使用 SELECT \*,而是选择需要的列。 * 避免使用复杂的查询语句,尽量使用简单的查询语句。 * 使用索引来提高查询速度。 四、查询优化 ...

    Oracle中优化SQL查询方法的探讨.pdf

    本文从减少剖析Oracle SQL表达式的时间和优化SQL语句执行过程两个角度出发,探讨了提高Oracle数据库性能的多种方法。 首先,关于减少剖析Oracle SQL表达式的时间,主要涉及了三种技术方法。第一种方法是使用ordered...

    Oracle Sql基础 Oracle Sql基础 Oracle Sql基础

    - **2.2.2 使用WHERE字句** - WHERE子句用于指定查询条件,只有满足条件的行才会出现在结果集中。 - **2.2.3 条件中使用字符串和日期** - 可以在WHERE子句中使用字符串比较(如LIKE)和日期比较(如BETWEEN)等...

    oracle四大宝典之1:Oracle Sql基础.docx

    WHERE字句可以与各种比较条件结合,如等于(=)、不等于()、大于(>)、小于(<)、大于等于(>=)、小于等于()以及BETWEEN和IN条件,用于范围和列表过滤。同时,ORDER BY子句用于对查询结果进行排序,可以指定...

    第5课+MaxCompute+DML操作.docx

    MaxCompute SQL虽然具备多种运算符支持、DDL(Data Definition Language)语句用于表和视图管理、SELECT语句进行查询、WHERE字句进行数据过滤、INSERT语句插入和更新数据、JOIN操作连接多表、内置和自定义函数计算...

    鸿鹄论坛_oracle四大宝典之1:Oracle Sql基础.

    3. **SQL语句的编辑**:在编写SQL语句时,可以使用注释和换行来提高代码的可读性。 4. **列标题默认属性**:在查询结果中,列标题默认显示为表中的列名。 5. **算术表达式**:可以在`SELECT`语句中进行简单的算术...

    Oracle开发实用教程.pptx

    WHERE字句用于在查询过程中的限制条件。 简单查询格式如下: SELECT {字段名列表} FROM 表名; 【例】假设关于一个企业信息的数据库中有三个表:职工表EMP、部门表DEPT、岗位(或工种)表JOBLEVEL。 其中:表EMP...

    LINQ查询字句,linq学习

    1. **查询表达式**:LINQ查询表达式使用类似于SQL的语法,如`from`、`select`、`where`等,允许开发者以声明式方式编写查询,降低了与数据交互的复杂性。例如,查询一个集合中所有年龄大于18岁的用户: ```csharp ...

    计算机二级《MySQL数据库程序设计》知识点总结.pdf

    - **过滤**:`WHERE`字句用来筛选满足特定条件的记录,支持等于、不等于、大于、小于等比较操作,还有`BETWEEN`、`IN`、`NOT IN`、`LIKE`和正则表达式等多种筛选方式。 - **计算**:可以使用算术运算、函数(如`...

Global site tag (gtag.js) - Google Analytics