以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 储存过程得到的表如何用select语句调用? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=149468) |
-- 作者:happyft -- 发布时间:2020/5/3 17:18:00 -- 储存过程得到的表如何用select语句调用? 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语句加载? (我现在是将储存过程执行的结果先存入一个物料表中再查询) 谢谢! |
-- 作者:有点酸 -- 发布时间:2020/5/4 8:51:00 -- 既然有了RowNum列,直接用常规方法分页加载就行了: LoadOver指定为RowNum列,也就是根据RowNum列分页。 |
-- 作者:HappyFt -- 发布时间: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秒就可以,但为何加了外部查询也只是从这个查询中再分页显示,按理更快,为何变慢了? 谢谢
|
-- 作者:有点酸 -- 发布时间:2020/5/4 14:14:00 -- 这个要问微软了,或者去一些专业的SQL论坛问问 2、给产品编号加上全文索引 产品编号一定要用用Like吗,而且一定要包括某个内容的编码吗?
[此贴子已经被作者于2020/5/4 14:14:50编辑过]
|