`
java--hhf
  • 浏览: 308495 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

使用if或case when优化SQL

阅读更多

一、[基本查询语句展示优化]

#根据type查询
SELECT id,title,type FROM table WHERE type=1;
SELECT id,title,type FROM table WHERE type=2;

 用if优化

#if(expr,true,false)
SELECT id,title,type,if(type=1,1,0) as type1,if(type=2,1,0) as type2 FROM table;
SELECT id,title,type,if(type=1,1,0) as type1,if(type=2,1,0) as type2 FROM table;

 用case when优化

#case...when...then...when...then...else...end
SELECT id,title,type,case type WHEN 1 THEN 'type1' WHEN 2 THEN 'type2' ELSE 'type error' END as newType FROM table;

 

二、[统计数据性能优化]

#两次查询不同条件下的数量
SELECT count(id) AS size FROM table WHERE type=1
SELECT count(id) AS size FROM table WHERE type=2

 用if优化

#sum方法
SELECT sum(if(type=1, 1, 0)) as type1, sum(if(type=2, 1, 0)) as type2 FROM table
#count方法
SELECT count(if(type=1, 1, NULL)) as type1, count(if(type=2, 1, NULL)) as type2 FROM table
#亲测二者的时间差不多
#建议用sum,因为一不注意,count就会统计了if的false中的0

 用case when优化

#sum
SELECT sum(case type WHEN 1 THEN 1 ELSE 0 END) as type1, sum(case type WHEN 2 THEN 1 ELSE 0 END) as type2 FROM table
#count
SELECT count(case type WHEN 1 THEN 1 ELSE NULL END) as type1, count(case type WHEN 2 THEN 1 ELSE NULL END) as type2 FROM table

 亲测查询两次和优化后查询一次的时间一样,优化时间为1/2

 

1
4
分享到:
评论

相关推荐

    case when和sum case when 写法及拼接字段

    它的工作原理类似于编程语言中的 `if...else` 语句,但在 SQL 中用于创建动态列或进行复杂的条件判断。 #### 基本语法 ```sql CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE ...

    详细解析 mysql 中的 case when 语句的使用

    - 类似于使用`IF`函数的方法,但使用`CASE WHEN`语句替换`IF`函数。 - 对于每个`download_type_id`的值,使用`CASE WHEN`语句检查是否等于特定的类型ID,如果是,则计数器加1,否则计数器加0。 - 使用`SUM()`函数...

    如何使用CASE WHEN语法判断入参代替if test=user-name != null and user-name !=

    不同于MyBatis `<if>` 标签在特定ORM框架下的应用,CASE WHEN是标准SQL的一部分,广泛支持于Oracle、SQL Server、MySQL等多种数据库系统乃至PL/SQL等SQL窗口。这意味着,无论身处何种开发环境或数据库平台,CASE ...

    casewhen多条件oracle-casewhen(casewhen同时满足多条件).pdf

    这儿的 CASE WHEN 语句用于判断日期差是否大于或等于 0,如果是则返回 '有效',否则返回 '无效'。 CASE WHEN 语句在 Oracle 数据库中是非常常用的,特别是在复杂的查询和统计中。它可以帮助我们实现多个条件的判断...

    MySQL排序中使用CASE WHEN的方法示例

    我们可以使用`IF`或`CASE WHEN`来改变排序依据,将0的值转换为较大的数值。例如,如果其他状态的数值都小于100,我们可以这样做: ```sql SELECT * FROM table ORDER BY IF(status = 0, 100, status); ``` 或 ```...

    SqlServer使用 case when 解决多条件模糊查询问题

    我们在进行项目开发中,经常会遇到多条件模糊...最近写数据库存储过程的时候经常使用case when 语句,正好可以用这个语句解决一下以上问题。以SQL中的NorthWind数据库为例,我要操作的是其中的Employees表,该表中默认

    oracle case when 语句的用法详解

    Oracle的CASE WHEN语句是SQL查询中的一个非常重要的条件判断工具,它允许你在单个查询中根据不同的条件执行不同的操作。CASE WHEN语句有两种主要形式:简单CASE和搜索CASE。 **1. 简单CASE函数** 简单CASE主要用于...

    mysql case when group by 实例详解

    MySQL中的`CASE WHEN`语句是一种条件判断表达式,它在SQL查询中起到了类似编程语言中`switch-case`或`if-else`的作用。这个功能强大的工具允许你在单个查询中根据不同的条件返回不同的结果值,非常适合数据分析和...

    SQL类似代码中IF的语法

    Sql_Case_When 很有用的SQL用法!

    oracle_sql使用.docx

    SQL优化方面,建议避免使用通配符'*'来选择所有列,因为它可能导致不必要的计算。使用EXISTS通常比IN更高效,尤其是在子查询中。对于全表删除,TRUNCATE比DELETE更快,但不可回滚。合理使用索引可以显著提升查询速度...

    SQL CASE及结构转换问题

    在SQL中,`CASE`可以被看作是编程语言中的if-else逻辑,用于根据某些条件来改变输出值。它的基本语法结构如下: ```sql CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 ... ELSE 默认结果 END ``` 这里,`...

    sql判断语句.txt

    根据给定文件的信息,本文将深入探讨SQL中的判断语句,特别是CASE表达式的使用方法及其在实际场景中的应用。此外,我们还将分析不同类型的CASE语句,并通过具体例子来加深理解。 ### SQL中的CASE表达式 #### CASE...

    论SQL Server数据库中Case函数的作用.pdf

    在使用简单Case函数时,它会从上到下检查每一个WHEN后的条件,一旦发现匹配就会返回相应的结果,如果没有任何WHEN条件满足,则返回ELSE后的结果,如果 ELSE 也没有被指定,则返回NULL。 搜索Case函数则是根据一系列...

    MySQL中的if和case语句使用总结

    Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用: IF表达式 代码如下: IF(expr1,expr2,expr3) ...作为表达式的if也可以用CASE when来实现: 代码如下: se

    SQL性能改善及性能优化

    当需要进行复杂的条件判断时,使用DECODE比使用CASE WHEN或IF结构更简洁,执行效率也更高。 用WHERE子句替换HAVING子句可以在早期阶段过滤数据,HAVING通常用于GROUP BY后的条件筛选,但在无需分组的情况下,WHERE...

    关于case when语句的报错问题详解

    在SQL中,`CASE`表达式是一个非常强大的工具,它允许我们进行条件判断,类似于其他编程语言中的`if/else`语句。然而,在实际使用过程中,可能会遇到一些报错情况,比如在尝试使用`CASE WHEN`语句时,可能会遇到...

    SQL\常見的流程控制語句

    - `when_expression`:是使用CASE格式时`input_expression`所比较的表达式。 - `result_expression`:当`input_expression`与`when_expression`取值为TRUE时返回的表达式。 - `else_result_expression`:当取值不为...

    MySQL数据库:流程控制语句case.pptx

    case_value是要被判断的值或表达式,接下来是一系列的WHEN-THEN块,每一块的when_value参数指定要与case_value比较的值,如果为真,就执行statement_list中的SQL语句。如果前面的每一个块都不匹配就会执行ELSE块指定...

    sql\(很长的l模糊查询拼接)sql存储过程

    3. **CASE表达式优化**: - **CASE表达式**是一种根据不同条件返回不同结果的表达式,在构建动态SQL时可以提供更简洁的写法。 - **示例**: ```sql SELECT * FROM table WHERE addDate = CASE WHEN @addDate ...

Global site tag (gtag.js) - Google Analytics