“%” 比 “=” 快?

akgold 2003-08-30 11:37:13
為何第一語句比第二語句慢?

語句一:select * from pr04_pr05_su_jiao_原材料 with (nolock) where pr0501='YMU5008' and pr0408 = '005' order by pr0504,pr0503 )


語句二:select * from pr04_pr05_su_jiao_原材料 with (nolock) where pr0501 like '%YMU5008' and pr0408 = '005' order by pr0504,pr0503
...全文
24 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ezhou 2003-08-31
  • 打赏
  • 举报
回复
如果单独执行的话,第2句应该比第1句执行要快才对!
ghost555 2003-08-31
  • 打赏
  • 举报
回复
支持光明顶的看法!
w_rose 2003-08-31
  • 打赏
  • 举报
回复
把“ and pr0408 = '005' ”删除掉,再试试。
leimin 2003-08-30
  • 打赏
  • 举报
回复
語句二:select * from pr04_pr05_su_jiao_原材料 with (nolock) where pr0501 like '%YMU5008' and pr0408 = '005' order by pr0504,pr0503

語句一:select * from pr04_pr05_su_jiao_原材料 with (nolock) where pr0501='YMU5008' and pr0408 = '005' order by pr0504,pr0503 )

你改变一下顺序,在测试一边看看:-)

zarge 2003-08-30
  • 打赏
  • 举报
回复
关注
akgold 2003-08-30
  • 打赏
  • 举报
回复
事實就慢,在查詢分析器就可判定.
52vc 2003-08-30
  • 打赏
  • 举报
回复
不可吧!前者查询的理论上比后者要少
jiangchuandong 2003-08-30
  • 打赏
  • 举报
回复
你是怎样判定快慢的?
txlicenhe 2003-08-30
  • 打赏
  • 举报
回复
应该不会,多试几次。
leimin 2003-08-30
  • 打赏
  • 举报
回复
我不是让你试试改变顺序么?

这是因为語句二用了語句一的执行规划,你改变顺序测试一下或在运行語句二是从新启动SQLSERVER在试试看。

这样的情况就不会发生了。


理论上不会!
实际也不会!
wengdy2000 2003-08-30
  • 打赏
  • 举报
回复
应该不会吧,
是不是哪儿出现问题了
zjcxc 2003-08-30
  • 打赏
  • 举报
回复
語句一:select * from pr04_pr05_su_jiao_原材料 with (nolock) where pr0501='YMU5008' and pr0408 = '005' order by pr0504,pr0503 )

語句二:select * from pr04_pr05_su_jiao_原材料 with (nolock) where pr0501 like '%YMU5008' and pr0408 = '005' order by pr0504,pr0503

这主要是从是否能利用索引来考虑的,假设表建立了pr0501,pr0408的索引
则第一句会利用索引,而第二句不会,因为第二句的like比较中,第一个是通配符,从而无法确定从那个位置开始检索数据.
sjw800614 2003-08-30
  • 打赏
  • 举报
回复
to 邹建,
可以说一下,在理论上 为什么不会吗???
等待中 ... ...
... ...
zjcxc 2003-08-30
  • 打赏
  • 举报
回复
理论上不会.

不过实际情况就难说.

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧