Foxtable(狐表)用户栏目专家坐堂 → 储存过程得到的表如何用select语句调用?


  共有3035人关注过本帖树形打印复制链接

主题:储存过程得到的表如何用select语句调用?

帅哥哟,离线,有人找我吗?
happyft
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
储存过程得到的表如何用select语句调用?  发帖心情 Post By:2020/5/3 17:18:00 [显示全部帖子]

dim sql as string = "
SELECT  *
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY 进出日期 ASC ) AS RowNum ,
                    *
          FROM      uv_kc105
          WHERE     进出日期 >= '2020-03-01'
                    AND ( 产品编码 LIKE '%B0104041%' )
        ) AS tb
WHERE   RowNum >= 1
        AND RowNum <= 6000
"
DataTables(WinName & "_Table1").SQLLoad(sql,False)

原来是用上面的语句直接从后台分页加载数据,但有个问题,数据量很大时上面的查询会非常慢,但实际红色部门的代码执行只要3秒,但加上前面这个简单的分页查询时
速度就很慢,2分钟都查不出来,直接显示超时了,但只要把红色的先保存在一个临时表中,相同的查询也只有3秒

所以用临时表就不能直接用sql查询语句了,改为了储存过程:
Dim cmd As New SQLCommand
cmd.ConnectionName = Mydata
cmd.CommandText = "Exec usp_ldpage_query10 '" & ldpagecol & "','" & Loadorder & "','" & tbs & "','" & Filter & "'," & r1 & "," & r2
Dim dt As DataTable  = cmd.ExecuteReader
dim sql as string = "Select * From dt"
DataTables(WinName & "_Table1").SQLLoad(sql,False)
上面蓝色部份应该如何写才可以用下面这句sqlLoad语句加载? (我现在是将储存过程执行的结果先存入一个物料表中再查询)
谢谢!



 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2020/5/4 11:44:00 [显示全部帖子]

我的所有表单都是sqltable fill表结构的,如果加载数据时又用常规方法原来有时就不会加载数据,
或者这个查询还可以怎么改速度不慢就行?
SELECT  *
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY 进出日期 ASC ) AS RowNum ,
                    *
          FROM      uv_kc105
          WHERE     进出日期 >= '2020-03-01'
                    AND ( 产品编码 LIKE '%B0104041%' )
        ) AS tb
WHERE   RowNum >= 1
        AND RowNum <= 6000
因为有100W以上数据,红色部份很快,3秒就可以,但为何加了外部查询也只是从这个查询中再分页显示,按理更快,为何变慢了?
谢谢

 回到顶部