zoukankan      html  css  js  c++  java
  • SQLServer 2005 Inside Query

    1. ON筛选器和WHERE筛选器

    二者的主要区别是ON在添加外部行之前被应用,而WHERE是在之后被应用。ON对保留表部分行的移除不是最终的,因为会在步骤3中再添加回来。所以在使用外部关联的时候会存在差别。

    2. 三值逻辑

    SQL中逻辑表达式的值包括TRUE、FALSE、UNKNOWN。与NULL相关的很多都是UNKNOWN。在查询筛选器(WHERE、ON、HAVING)把UNKNOWN作为FALSE处理,而CHECK约束、GROUP BY和ORDER BY作为TRUE处理。

    3. ORDER BY

    如果在SELECT语句中没有使用DISTINCT,则在ORDER BY中可以按最后结果集中不存在的表达式排序。

    ORDER BY字句中可以使用SELECT列表中结果列的序号,例如:

    SELECT orderid, customerid FROM dbo.Orders ORDER BY 2,1;

     4. OVER字子句

    OVER子句可以在SELECT和ORDER BY中使用,例如:

    代码
    SELECT orderid, customerid,
    COUNT(*OVER(PARTITION BY customerid) as num_orders
    FROM dbo.Orders
    where customerid IS NOT NULL;

    SELECT orderid, customerid
    FROM dbo.Orders
    where customerid IS NOT NULL
    ORDER BY COUNT(*OVER(PARTITION BY customerid) DESC;

     5. 优化方法论

     自顶向下:分析实例级等待,通过一系列步骤不断细化,找到导致大量等待的进程/组件,优化索引/查询。

     6. TABLESAMPLE

    可以使用TABLESAMPLE从现有表生成示例数据:

    SELECT * 
    FROM dbo.Orders TABLESAMPLE (1000 ROWS);

    SELECT * 
    FROM dbo.Orders TABLESAMPLE (0.1 PERCENT);

     7. NOT EXISTS 与 NOT IN

    当存在NULL时,NOT EXISTS和NOT IN并不是逻辑等价的。

     8. ANY, SOME, ALL

    ANY 与 SOME之间没有逻辑区别

    orderid>ANY(select orderid from dbo.orders) --大于任何一个即为TRUE
    orderid
    >ALL(select orderid from dbo.orders) --大于所有才为TRUE

     9. ROW_NUMBER, RANK, DENSE_RANK

  • 相关阅读:
    web项目中添加logger日志
    oracle 创建表空间
    从request中读数据流
    通过request获取ID地址的方法
    创建表空间的sql语句
    plsql点击不再提示后需重新提示
    js文件报错Syntax error on token "Invalid Regular Expression Options", no accurate correction
    java知识
    DevC++出现[Error] ld returned 1 exit status,如何解决才好呢?
    1
  • 原文地址:https://www.cnblogs.com/end/p/1958428.html
Copyright © 2011-2022 走看看