一条SQL语句的速度问题,帮我提高速度。

webspice 2003-11-06 06:25:20
SELECT DISTINCT dbo.[TCL_物料编码].物料代码, dbo.[TCL_物料编码].材料名称
FROM [TCL_物料编码] INNER JOIN
[LSB_K3出入库综合查询] ON
[TCL_物料编码].物料代码 = SUBSTRING([LSB_K3出入库综合查询].物料代码,
1, LEN([TCL_物料编码].物料代码))
WHERE ([TCL_物料编码].删除标志 = 0)


TCL_物料编码 是基础表,表中是各个级别的物料编码,在 LSB_K3出入库综合查询 中是最明细的物料编码,现在根据明细的各个物料编码要找出其所有上级的编码

我用了上面的SQL语句,速度很慢,帮帮忙想想办法,能否提高速度?
...全文
74 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
simanh 2003-11-25
  • 打赏
  • 举报
回复
SELECT DISTINCT dbo.[TCL_物料编码].物料代码, dbo.[TCL_物料编码].材料名称
FROM [TCL_物料编码]
WHERE ([TCL_物料编码].删除标志 = 0)
and [TCL_物料编码].物料代码 in
(select SUBSTRING([LSB_K3出入库综合查询].物料代码,
1, LEN([TCL_物料编码].物料代码) as Material_Code
from [LSB_K3出入库综合查询])

大概是这样,因为你的SQL太多中文,看得眼花
simanh 2003-11-25
  • 打赏
  • 举报
回复
把join on的条件作为1个子查询,查出所有符合你on条件的记录,再把该记录集作为主查询的条件之一(用in或exists)
simanh 2003-11-25
  • 打赏
  • 举报
回复
不要用join处理,改成子查询会快很多,特别是在记录多的时候
Random 2003-11-25
  • 打赏
  • 举报
回复
如果[TCL_物料编码].物料代码 上没有建索引的话也给这个字段建立索引!如果它是主键的话就不必了!
Random 2003-11-25
  • 打赏
  • 举报
回复
如果还是不够快,就建索引吧!在 [LSB_K3出入库综合查询].物料代码 上建立索引
xhpp1007 2003-11-25
  • 打赏
  • 举报
回复
楼上的SQL文史高效的 -- 不要用substring用like速度会块很多
webspice 2003-11-25
  • 打赏
  • 举报
回复
速度还是不够明显提快,帮帮忙,我一定给分
Random 2003-11-25
  • 打赏
  • 举报
回复
试试这个:
SELECT DISTINCT dbo.[TCL_物料编码].物料代码, dbo.[TCL_物料编码].材料名称
FROM [TCL_物料编码] INNER JOIN
[LSB_K3出入库综合查询] ON
LSB_K3出入库综合查询].物料代码 LIKE [TCL_物料编码].物料代码+'%'
WHERE ([TCL_物料编码].删除标志 = 0)
uffeng 2003-11-25
  • 打赏
  • 举报
回复
恩 SUBSTRING 是很 慢的
不过 你如果可以实现得到SUBSTRING([LSB_K3出入库综合查询].物料代码,
1, LEN([TCL_物料编码].物料代码))的数值
再用LIKE 语句 速度会块很多!!!
01order 2003-11-25
  • 打赏
  • 举报
回复
楼是的猪位兄弟
你们挺搞笑的! :)
victorycyz 2003-11-25
  • 打赏
  • 举报
回复
跟楼上两位有同感。

基本上,效率较低的地方在下面这部分,SQL查询不能优化。建议分步查询。

[TCL_物料编码].物料代码 = SUBSTRING([LSB_K3出入库综合查询].物料代码,
1, LEN([TCL_物料编码].物料代码))
jpinglee 2003-11-06
  • 打赏
  • 举报
回复
跟busisoft兄有同感
busisoft 2003-11-06
  • 打赏
  • 举报
回复
看这样的语句很累

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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