“ident_key = null 上的左连接表”是否有助于查询速度?

Ben

有三张桌子,两张上游table A and B,一张下游table C中的记录table A and B被处理并合并到table C.

Table A ( id_a identity not null, prop, val )
Table B ( id_b identity not null, prop, val )
Table C ( id_c, 
    original_id [id_a or id_c],
    prop, processed_val, 
    source_table [ 'A' or 'B' ] )
NOTE: id_a and id_b has different format they never collide.

我需要在不访问应用程序代码的情况下纠正一些应用程序行为。所以我试图附加一个触发器table Cprocess_val根据原始数据进行操作。

我可以

UPDATE C 
SET processed_value = NEW_FUNCTION( coalesce(A.val,B.val) )
FROM inserted
LEFT JOIN A ON ( C.orginal_id = A.id )
LEFT JOIN B ON ( C.orginal_id = B.id )

但我认为在返回结果之前,这必须经过两个表索引。我不想使用动态查询,我想保持简单的 sql 过程。

我想知道像下面这样的东西是否有助于防止冗余查找,因为这些键不应该是NULLNULL值会停止查找吗?

UPDATE C 
SET processed_value = NEW_FUNCTION( coalesce(A.val,B.val) )
FROM inserted
LEFT JOIN A ON ( A.id = case when source_table='A' then C.orginal_id else NULL end )
LEFT JOIN B ON ( B.id = case when source_table='B' then C.orginal_id else NULL end )

或者在 MSSQL 中有没有其他方法可以动态切换源表(没有动态查询)?

戈登·利诺夫

我想你想要一个JOIN之间我希望逻辑看起来更像这样:Cinserted

UPDATE C 
    SET processed_value = NEW_FUNCTION(coalesce(A.val, B.val))
    FROM inserted i JOIN
         C
         ON i.id_c = C.id_C LEFT JOIN
         A
         ON A.id = i.original_id AND i.source_table = 'A' LEFT JOIN
         B
         ON B.id = C.orginal_id AND i.source_table = 'B';

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Ask Ask Ubuntu上做贡献是否有助于我成为Ubuntu会员?

来自分类Dev

TSQL查询有助于结构化结果

来自分类Dev

TSQL查询有助于结构化结果

来自分类常见问题

索引是否有助于sql选择排序性能?

来自分类Dev

索引是否有助于sql选择排序性能?

来自分类Dev

Eclipse RCP:这是否有助于片段项目

来自分类Dev

Redis复制是否有助于负载均衡?

来自分类Dev

硬件是否有助于减少OS X的崩溃?

来自分类Dev

TLP是否真的有助于延长电池寿命?

来自分类Dev

嵌套循环是否有助于解析结果

来自分类Dev

STRAPI是否有助于开发REST API以轻松且经济高效地连接Flutter应用

来自分类Dev

有助于Google翻译的API

来自分类Dev

是否有任何数学算法有助于良好的响应式html设计?

来自分类Dev

使用CSRF表单令牌是否有助于预防垃圾邮件?

来自分类Dev

SocketAsyncEventArgs“ pooled byte []”样式是否有助于减少内存需求?

来自分类Dev

关闭选项卡/窗口之前删除变量是否有助于释放内存?

来自分类Dev

批处理Google Drive API请求是否有助于缓解RateLimitExceeded错误?

来自分类Dev

重新生成会话ID是否有助于防止固定和/或劫持?

来自分类Dev

较大的SWAP分区面积是否有助于更快地“挂起\休眠”?

来自分类Dev

Facebook登录流程,有助于了解我是否需要调试令牌调用?

来自分类Dev

刻录DVD / CD较慢是否有助于确保不会出现错误?

来自分类Dev

CSS初学者,是否有助于创建此布局?

来自分类Dev

WebSphere Application Server的MQ链接是否有助于连接到第三方JMS提供程序

来自分类Dev

检查key的字典值是否为null

来自分类Dev

基本的JavaScript对象结构有助于访问属性

来自分类Dev

线程有助于提高Java的效率吗?

来自分类Dev

流浪汉如何有助于发展

来自分类Dev

与流有助于消除从文件扩展名

来自分类Dev

哪些属性有助于LCD面板的质量?

Related 相关文章

  1. 1

    在Ask Ask Ubuntu上做贡献是否有助于我成为Ubuntu会员?

  2. 2

    TSQL查询有助于结构化结果

  3. 3

    TSQL查询有助于结构化结果

  4. 4

    索引是否有助于sql选择排序性能?

  5. 5

    索引是否有助于sql选择排序性能?

  6. 6

    Eclipse RCP:这是否有助于片段项目

  7. 7

    Redis复制是否有助于负载均衡?

  8. 8

    硬件是否有助于减少OS X的崩溃?

  9. 9

    TLP是否真的有助于延长电池寿命?

  10. 10

    嵌套循环是否有助于解析结果

  11. 11

    STRAPI是否有助于开发REST API以轻松且经济高效地连接Flutter应用

  12. 12

    有助于Google翻译的API

  13. 13

    是否有任何数学算法有助于良好的响应式html设计?

  14. 14

    使用CSRF表单令牌是否有助于预防垃圾邮件?

  15. 15

    SocketAsyncEventArgs“ pooled byte []”样式是否有助于减少内存需求?

  16. 16

    关闭选项卡/窗口之前删除变量是否有助于释放内存?

  17. 17

    批处理Google Drive API请求是否有助于缓解RateLimitExceeded错误?

  18. 18

    重新生成会话ID是否有助于防止固定和/或劫持?

  19. 19

    较大的SWAP分区面积是否有助于更快地“挂起\休眠”?

  20. 20

    Facebook登录流程,有助于了解我是否需要调试令牌调用?

  21. 21

    刻录DVD / CD较慢是否有助于确保不会出现错误?

  22. 22

    CSS初学者,是否有助于创建此布局?

  23. 23

    WebSphere Application Server的MQ链接是否有助于连接到第三方JMS提供程序

  24. 24

    检查key的字典值是否为null

  25. 25

    基本的JavaScript对象结构有助于访问属性

  26. 26

    线程有助于提高Java的效率吗?

  27. 27

    流浪汉如何有助于发展

  28. 28

    与流有助于消除从文件扩展名

  29. 29

    哪些属性有助于LCD面板的质量?

热门标签

归档