博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两个神奇的SQL语句
阅读量:5119 次
发布时间:2019-06-13

本文共 866 字,大约阅读时间需要 2 分钟。

请大家一起来看两个SQL语句:
1.
 1
select
 
top
 
10
 id 
from
 yp_41 
where
 2
(
 3
    (
 4
        category 
in
 5
        (
 6
            
select
 categorycode 
from
 all_keyword 
where
 keyword 
like
 
'
%纸箱%
'
 7
        )
 8
        
and
 region 
like
 
'
41%
'
  
 9
    )
10
    
and
 category 
like
 
'
%
'
11
    
or
12
    (
13
        category
=
'
00000000
'
 
and
 
[
name
]
 
like
 
'
%纸箱%
'
 
and
 region 
like
 
'
41%
'
14
    )
15
)
16
2.
 1
select
 
count
(
*
from
 yp_41 
where
 2
(
 3
    (
 4
        category 
in
 5
        (
 6
            
select
 categorycode 
from
 all_keyword 
where
 keyword 
like
 
'
%纸箱%
'
 7
        )
 8
        
and
 region 
like
 
'
41%
'
 9
    )
10
    
and
 category 
like
 
'
%
'
 
11
    
or
12
    (
13
        category
=
'
00000000
'
 
and
 
[
name
]
 
like
 
'
%纸箱%
'
 
and
 region 
like
 
'
41%
'
14
    ) 
15
)
16
两个语句几乎完全一样,只是select子句的内容不同。运行的结果是,第一个语句需要2分多钟,而第二个语句只需要2秒钟左右。
请高人指点一下这是为什么?
以下是一些背景情况:
1 yp_41中的数据有300多万条;
2 all_keyword中的数据有1万多条;
3 所有在where中涉及的列都已加索引(虽然索引对于like好像没什么作用。如果不加索引,则两个SQL一样的慢。)

转载于:https://www.cnblogs.com/AndersLiu/archive/2007/10/26/938669.html

你可能感兴趣的文章
Zookeeper简单介绍
查看>>
实验的方差分析(R语言)
查看>>
完美解决textarea字数限制
查看>>
nginx实现负载均衡
查看>>
Linux Crontab 定时任务使用总结
查看>>
java错误LoadRunner JAVA Vuser协议手工写脚本Failed to find Classes.zip entry in Classpath问题...
查看>>
【leetcode】Best Time to Buy and Sell Stock
查看>>
Linux下使用vim的tips
查看>>
在Ubuntu上使用pip安装错误 read timed out 处理方法
查看>>
SQL SERVER 内存
查看>>
奇虎360技术博客
查看>>
mysql router 自动failover测试
查看>>
systemtap 技巧系列 +GDB
查看>>
linux 系统调优2
查看>>
ASM 图解
查看>>
docker技术网址
查看>>
python基础之流程控制、数字和字符串处理
查看>>
Introduction of Servlet Filter
查看>>
类似于1.0-0.8=0.19999999999999996的解决办法
查看>>
Linux配置自动时间同步
查看>>