为什么where中加多AND 条件时查询速度会慢了9倍速?(索引已加了)

yuhuahuang 2006-04-14 03:56:57
有两个表va02及va03.
索引有va0201为主索引,va0301为主索引,另建D_ATE及app索引
以下加了and 就慢了9倍
SELECT dbo.va03.so, dbo.va03.kekan, dbo.va03.partno,
dbo.va03.app, dbo.va03.qty + ISNULL(dbo.va03.shipi, 0) AS qty
FROM dbo.va03 WITH (nolock) LEFT OUTER JOIN
dbo.VA02 ON dbo.va03.VA0301 = dbo.VA02.VA0201
WHERE (dbo.VA02.D_ATE > '2006/3/13') AND (CHARINDEX('制扣配件', dbo.va03.app)
> 0)

以下两种方式就快得多了,为什么呢?如何提高速度?谢谢!
SELECT dbo.va03.so, dbo.va03.kekan, dbo.va03.partno,
dbo.va03.app, dbo.va03.qty + ISNULL(dbo.va03.shipi, 0) AS qty
FROM dbo.va03 WITH (nolock) LEFT OUTER JOIN
dbo.VA02 ON dbo.va03.VA0301 = dbo.VA02.VA0201
WHERE (dbo.VA02.D_ATE > '2006/3/13')
---------------------------------------------------------------------
SELECT dbo.va03.so, dbo.va03.kekan, dbo.va03.partno,
dbo.va03.app, dbo.va03.qty + ISNULL(dbo.va03.shipi, 0) AS qty
FROM dbo.va03 WITH (nolock) LEFT OUTER JOIN
dbo.VA02 ON dbo.va03.VA0301 = dbo.VA02.VA0201
WHERE ((CHARINDEX('制扣配件', dbo.va03.app)
> 0)




注:索引的腳本
CREATE UNIQUE CLUSTERED INDEX [a] ON [dbo].[VA02]([VA0201]) WITH FILLFACTOR = 90 ON [PRIMARY]
CREATE INDEX [va0204date] ON [dbo].[VA02]([VA0204]) ON [PRIMARY]
CREATE UNIQUE CLUSTERED INDEX [va03a] ON [dbo].[va03]([VA0301], [VA0302], [VA0303], [so], [keSo], [kekan], [sup], [partno]) WITH FILLFACTOR = 90 ON [PRIMARY]
CREATE INDEX [va03app] ON [dbo].[va03]([app]) ON [PRIMARY]

...全文
743 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
-狙击手- 2006-04-14
  • 打赏
  • 举报
回复
分开执行快的话,能不能这样把这两个查询结果当作表进行关联查询啊?
-狙击手- 2006-04-14
  • 打赏
  • 举报
回复
dbo.va03.app 这个列规律是什么样的,只有想办法回避模糊查询才有突破
yuhuahuang 2006-04-14
  • 打赏
  • 举报
回复
大哥:之前我是用AND ( dbo.va03.app like '%制扣配件%') 不是用((CHARINDEX('制扣配件', dbo.va03.app)> 0)
結果是一樣的。
-狙击手- 2006-04-14
  • 打赏
  • 举报
回复
当然也尽量避免使用非打头字母搜索,这也使得引擎无法利用索引

关键是这个AND ( dbo.va03.app like '%制扣配件%') 也会引起表级搜索
-狙击手- 2006-04-14
  • 打赏
  • 举报
回复
尽量避免在WHERE子句中对字段进行函数或表达式操作,这将导致引擎放弃使用索引而进行全表扫描
-狙击手- 2006-04-14
  • 打赏
  • 举报
回复
SELECT dbo.va03.so, dbo.va03.kekan, dbo.va03.partno,
dbo.va03.app, dbo.va03.qty + ISNULL(dbo.va03.shipi, 0) AS qty
FROM dbo.va03 WITH (nolock) LEFT OUTER JOIN
dbo.VA02 ON dbo.va03.VA0301 = dbo.VA02.VA0201
WHERE (dbo.VA02.D_ATE > '2006/3/13') AND ( dbo.va03.app like '%制扣配件%')

---try
资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 松下电工数字压力传感器用户手册详细介绍了DP-100系列数字压力传感器,涵盖其技术参数、操作方法及适用场景等,适用于各类需要精准压力测量的工业环境。 双屏显示:主屏与输出动作同步,可同显示当前值和基准值,便于实监控与调整。显示屏为12段字母数字显示,数字清晰易读。 三色指示:屏幕颜色随传感器状态变化(红、绿、橙),便于快速判断工作状态。 紧凑结构:尺寸仅□30mm,适合空间狭窄的安装环境。 多种操作模式:提供RUN模式(日常操作)、菜单设定模式(深入设置如输出模式切换)及PRO模式(高级功能如应差调整、复制设定)。 安全认证:DP-101(A)/102(A)型号通过特定认证,确保产品安全可靠。 复制功能:可通过数据通信将主传感器设定内容复制到其他传感器,减少人工设定错误,节省间。 高性能传感:具备高精度,分辨率1/2,000,反应间2.5ms(最长5,000ms可调),温度特性±0.5%F.S.,重复精度±0.1%F.S. 电子元件吸附检测:监测吸盘是否成功吸附电子元件。 总压力监测:测量管道或容器内的压力水平。 空气泄漏检测:通过压力变化检测泄漏情况。 DP-101□:适用于低压环境(-100kPa至100kPa)。 DP-102□:适用于高压环境(0kPa至1MPa)。 订购需根据实际需求选择合适型号,考虑传感器的适用范围和工作条件。手册提供详细订购流程及注意事项,包括相关认证信息(如韩国S标志)。 复制功能:通过数据通信将主传感器设定复制到其他传感器,支持多种设定模式,避免设定错误,节省间。 操作模式:RUN模式用于日常监控,菜单设定模式用于深入设置,PRO模式提供高级功能。 使用前需仔细阅读手册,了解各功能使用方法。遵循安全指南,正确安装和使用传感器,避免损坏。对于

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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