有效的SQL Server 2005查询优化

索海尔

我有两个表SellPurchase我的查询给了我想要的结果,我对它的性能非常谨慎,因此请更好地指导我。我的表是:
表卖

UserId  | ProductId    |  ProductName   | ProductPrice
1       | p_101        |  Cycle         |   500
1       | p_121        |  Car           |   500000
2       | p_111        |  Cycle         |   5000

表购买

UserId  | ProductId    |  ProductName   | ProductPrice
1       | p_109        |  CellPhone     |   150
2       | p_121        |  Car           |   500000
3       | p_111        |  Book          |   15

所需的输出表

Type    | ProductId    |  ProductName   | ProductPrice
Sell    | p_101        |  Cycle         |   500
Sell    | p_121        |  Car           |   500000
Purchase| p_109        |  CellPhone     |   150

工作查询:

SELECT type, P1.ProductId, P1.ProductName, P1.ProductPrice
     FROM 
        (
         SELECT s.UserId, 'Sell' as type, s.ProductId, s.ProductName, s.ProductPrice FROM [Sell] s
         UNION
         SELECT p.userid, 'Purchase' as type, p.ProductId, p.ProductName, p.ProductPrice FROM [Purchase] p
        ) as P1
     WHERE userid=1 
阿达什·沙阿

更好的设计是合并两个表并具有transaction_type列,该列将以“ Purchase”或“ Sell”作为值。如果这样做,则不必做UNION或UNION ALL。

对于当前的设计,这里是一种获取记录的简单快捷的方法。请注意,由于UNION对唯一记录使用DISTINCT,因此我使用UNION ALL的速度比UNION快,我认为这种情况不适用于您的情况。如果您提供有关索引和执行计划的详细信息,我可以看看是否有更好的方法。

SELECT s.userid,
    'Sell' as type,
    s.ProductId, 
    s.ProductName, 
    s.ProductPrice 
FROM Sell s
WHERE UserId = 1
UNION ALL
SELECT p.userid,
    'Purchase' as type,
    p.ProductId, 
    p.ProductName, 
    p.ProductPrice
FROM Purchase P
WHERE UserId = 1

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有效的SQL Server 2005查询优化

来自分类Dev

选择分层查询的最有效方法-SQL Server 2014

来自分类Dev

如何使用SQL Server使用开始/结束日期对象编写有效的查询?

来自分类Dev

选择分层查询的最有效方法-SQL Server 2014

来自分类Dev

优化SQL Server 2012查询

来自分类Dev

优化SQL Server聚合查询

来自分类Dev

优化SQL Server 2012查询

来自分类Dev

SQL Server中的查询优化

来自分类Dev

SQL Server 排名查询优化

来自分类Dev

优化我的 SQL Server 查询

来自分类Dev

执行递归SQL查询(SQL Server 2005)

来自分类Dev

SQL Server 2005 查询帮助(分组依据)

来自分类Dev

SQL Server:如何有效地返回两个稍有不同的查询的组合结果集

来自分类Dev

SQL Server:如何有效地返回两个稍有不同的查询的组合结果集

来自分类Dev

查询在查询设计器中有效,但在MS SQL Server报表生成器中无效

来自分类Dev

相关嵌套查询的查询优化(SQL Server)

来自分类Dev

MS SQL Server 2008链接服务器查询显示“无效的对象名称”,但仍然有效

来自分类Dev

什么是最有效的SQL查询?

来自分类Dev

优化程序的SQL Server查询格式

来自分类Dev

如何优化SQL Server查询的where子句

来自分类Dev

SQL Server 外应用查询优化

来自分类Dev

SQL Server:查询性能分析-是否有优化想法?

来自分类Dev

查询优化-使用SQL有效地整理一对多关系表的结果

来自分类Dev

使用位数据类型列查询Sql Server 2005

来自分类Dev

使用查询SQL Server 2005选择DATEADD分钟

来自分类Dev

使用查询SQL Server 2005选择DATEADD分钟

来自分类Dev

从SQL Server 2005中的列中获取查询的xml节点

来自分类Dev

使用位数据类型列查询Sql Server 2005

来自分类Dev

LINQ或SQL查询。有什么更有效的?

Related 相关文章

  1. 1

    有效的SQL Server 2005查询优化

  2. 2

    选择分层查询的最有效方法-SQL Server 2014

  3. 3

    如何使用SQL Server使用开始/结束日期对象编写有效的查询?

  4. 4

    选择分层查询的最有效方法-SQL Server 2014

  5. 5

    优化SQL Server 2012查询

  6. 6

    优化SQL Server聚合查询

  7. 7

    优化SQL Server 2012查询

  8. 8

    SQL Server中的查询优化

  9. 9

    SQL Server 排名查询优化

  10. 10

    优化我的 SQL Server 查询

  11. 11

    执行递归SQL查询(SQL Server 2005)

  12. 12

    SQL Server 2005 查询帮助(分组依据)

  13. 13

    SQL Server:如何有效地返回两个稍有不同的查询的组合结果集

  14. 14

    SQL Server:如何有效地返回两个稍有不同的查询的组合结果集

  15. 15

    查询在查询设计器中有效,但在MS SQL Server报表生成器中无效

  16. 16

    相关嵌套查询的查询优化(SQL Server)

  17. 17

    MS SQL Server 2008链接服务器查询显示“无效的对象名称”,但仍然有效

  18. 18

    什么是最有效的SQL查询?

  19. 19

    优化程序的SQL Server查询格式

  20. 20

    如何优化SQL Server查询的where子句

  21. 21

    SQL Server 外应用查询优化

  22. 22

    SQL Server:查询性能分析-是否有优化想法?

  23. 23

    查询优化-使用SQL有效地整理一对多关系表的结果

  24. 24

    使用位数据类型列查询Sql Server 2005

  25. 25

    使用查询SQL Server 2005选择DATEADD分钟

  26. 26

    使用查询SQL Server 2005选择DATEADD分钟

  27. 27

    从SQL Server 2005中的列中获取查询的xml节点

  28. 28

    使用位数据类型列查询Sql Server 2005

  29. 29

    LINQ或SQL查询。有什么更有效的?

热门标签

归档