SQL中in或or与union all性能对比

使用or:

 代码如下 复制代码
WHERE * FROM article
WHERE article_category=2
OR article_category=3
ORDER BY article_id DESC
LIMIT 5
// 执行时间:11.0777

 
使用in:

 代码如下 复制代码

SELECT * FROM article
WHERE article_category IN (2,3)
ORDER BY article_id DESC
LIMIT 5

// 执行时间:11.2850
使用union all:

 代码如下 复制代码

(
    SELECT * FROM article
    WHERE article_category=2
    ORDER BY article_id DESC
    LIMIT 5
) UNION ALL (
    SELECT * FROM article
    WHERE article_category=3
    ORDER BY article_id DESC
    LIMIT 5
)
ORDER BY article_id DESC
LIMIT 5
// 执行时间:0.0261

时间: 2024-09-13 04:08:26

SQL中in或or与union all性能对比的相关文章

SQL点滴10—使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比

原文:SQL点滴10-使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比  今天偶尔看到sql中也有with关键字,好歹也写了几年的sql语句,居然第一次接触,无知啊.看了一位博主的文章,自己添加了一些内容,做了简单的总结,这个语句还是第一次见到,学习了.我从简单到复杂地写,希望高手们不要见笑.下面的sql语句设计到三个表,表的内容我用txt文件复制进去,这里不妨使用上一个随笔介绍的建立端到端的package的方法将这些表导入到数据库中,具体的就不说了. 从这里下载文件emplo

SQL中MINUS、INTERSECT、UNION、UNION All

一.基本概念 差集:MINUS 交集:INTERSECT 并集:UNION.UNION All.UNION将重复的元组去掉,UNION ALL则不会.   表Store_Information 店面营业表 store_name Sales Date 分店1 1500 2013-01-05 分店2 250 2013-01-07 分店1 300 2013-01-08 分店3 700 2013-01-08 表Internet Sales 网络营业表 Date Sales 2013-01-07 850

C++中几种callable实现方式的性能对比

前言 C++中想实现一个callable的对象,通常有四种方式: std::function:最common的方式,一般会配合std::bind使用. function pointer:最C的方式,但没办法实现有状态的callable object. function object:就是重载了operator()的类,C++98的STL中经常用. lambda expression:不会污染namespace,一般来说编译器内部会实现为一个匿名的function object. 从原理上性能最好

sql order by rand随机数据优化与性能对比

测试环境 apache2.2/php5.2/mysql5 测试数据 15W+数据,数据表大小600MB 测试语句 最初使用的是 order by rand()了,发现几万条数据居然要10秒之长的时间很是悲剧吧  代码如下 复制代码 SELECT * FROM `表名`  order by rand() 显示行 0 - 29 (154,825 总计, 查询花费 10.1125 秒) 后来网上搜索到如下方法,同样数据感觉有很大的提高了(这里测试的是15W数据)  代码如下 复制代码 SELECT *

python中多线程与非线程的执行性能对比

此对比说明了一件事: 如果是IO型应用,多线程有优势, 如果是CPU计算型应用,多线程没必要,还有实现锁呢. #!/usr/bin/env python # -*- coding: utf-8 -*- from threading import Thread class threads_object(Thread): def run(self): function_to_run() class nothreads_object(object): def run(self): function_t

sqlserver-关于sql中union的问题

问题描述 关于sql中union的问题 这个问题我已经找了很久,但是没有找到满意答案,不找到csdn大神们能不能帮我解决. 问题是这样的:我有一个存储过程,里面有几个查询,用union all连接,在sql server 2000中执行,单条都很快.但是用union all连起来,就变的非常缓慢.在sql server2008中执行,没有任何问题.请问大神们,这是什么原因呢?

《SQL与关系数据库理论——如何编写健壮的SQL代码》一2.7 SQL中的类型检查和型转

2.7 SQL中的类型检查和型转 SQL只支持弱形式的强类型化(如果你明白我的意思的话).具体说包括: BOOLEAN值只能赋值到BOOLEAN变量,并只能和BOOLEAN值比较. 数字值只能赋值给数值变量,并且只能与数字值比较(此处的"数字"(numeric)指的是SMALLINT.BIGINT.NUMERIC.DECIMAL 或者FLOAT ). 字符串值只能赋值给字符串变量并且只能与字符串值进行比较(此处的"字符串"指的是CHAR.VARCHAR或者CLOB)

sql中case语句的用法浅谈_MsSql

SQL中Case的使用方法 Case具有两种格式.简单Case函数和Case搜索函数. 复制代码 代码如下: --简单Case函数 CASE sex          WHEN '1' THEN '男'          WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男'          WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能.简单Ca

sql中case语句的用法浅谈

SQL中Case的使用方法 Case具有两种格式.简单Case函数和Case搜索函数.复制代码 代码如下:--简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能.简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功