Foxtable(狐表)用户栏目专家坐堂 → [求助]临时表在SQL中怎么用


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

主题:[求助]临时表在SQL中怎么用

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]临时表在SQL中怎么用  发帖心情 Post By:2020/1/11 12:22:00 [显示全部帖子]

项目中有两个表,表A和表B,都使用外部数据源,表B中有一表达式列Temp(逻辑型)
 
如果我想生成一个临时表dt,并且将它在另外的SQL中引用(例如用exist),因为如果用 in的话,一是效率比较低,二是in的数据量超过1000,就得分批执行,可能效率更低


此主题相关图片如下:无标题.png
按此在新窗口浏览图片

 
[此贴子已经被作者于2020/1/11 12:28:58编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/1/11 12:30:00 [显示全部帖子]

上传整段代码时总是报错,不让上传,只能截图了


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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/1/11 13:15:00 [显示全部帖子]

能不能这么用呢


图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/1/11 17:25:00 [显示全部帖子]

有没有变通的办法?
一是用SQL执行的效率更高一些
二是如果选中的行数比较多的话,再去用in效率反而更低

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/1/11 17:35:00 [显示全部帖子]

问题是生成临时表要用到临时列啊。

selec  t * f  rom 表B wh  ere Temp = 1

这里的Temp就是临时列,这似乎不行吧

这就成了个死循环了。
[此贴子已经被作者于2020/1/11 17:39:31编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/1/11 17:41:00 [显示全部帖子]

是否可以建一个内部表,然后把它与SQL结合使用?

把查询语句形成的数据filler到内部表中去

好象也不行
[此贴子已经被作者于2020/1/11 17:43:21编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/1/11 18:48:00 [显示全部帖子]

蓝版,我还是不太死心,应当有办法解决这个问题的,要不然只有牺牲效率了。前提是使用外部数据表

原本的意图举例(只是举例,类比真实的应用场景):例如在界面上选择了一些出货单,针对这些出货单去设置折扣比例(没有选中的单子不折扣)。

当然,用遍历然后去更新也可以实现。
只是真实的应用场景的数据量比较大,考虑到用SQL执行效率会高一些。



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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/1/13 10:39:00 [显示全部帖子]

在数据库表里添加辅助列,比如Temp列,不要使用表达式列。或者在数据库里添加一个数据表,存储临时数据

--在数据库表中增加辅助列,多人同时操作并发的时候,可能会有麻烦啊。
--在数据库里增加一个数据表,存储临时数据,也可能引起并发的麻烦

--因为有并发,恐怕不行吧

[此贴子已经被作者于2020/1/13 10:40:32编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/1/13 11:27:00 [显示全部帖子]

我倒,如果临时数据表还要搞这么多事儿,那就是要为数据表再增加一个从表。
那恐怕直接用SQL执行(还要过滤当前用户的数据)效率也高不到哪去。

昨天直接用FT的数据字典,选择了2200个单据,每个单据要更新10条数据,耗时约12秒,虽然差强人意,说不定再优化一下,还能缩短点儿
[此贴子已经被作者于2020/1/13 11:27:52编辑过]

 回到顶部