数据库查询是不能分析时间复杂度的。SQL语言是描述性语言,只需要告诉数据库要给你什么样的数据,而根本不需要知道有时也不太可能知道数据库是怎么实现的。
其他语言,像C,Java,都是过程语言,你去写每一条指令,写每一个循环,你可以控制它的时间复杂度。而数据库的实现在时间复杂度上会有成熟的优化算法,比如排序(order by),分组统计(group by)和取不重复值(distinct)。

解决方案 »

  1.   

    在网上发现了这个时间复杂度分析,不知道有没有道理.SQL语句中的查询语句是:
    select[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>,...]
    from<表名|视图名>[,<表名|视图名>,...]
    [where<条件表达式1>[,<条件表达式2>,...]]
    [groupby<列名>[having<条件表达式>]
    [orderby<列名>]。 其执行原理如下:
    按照Where语句中的条件表达式从数据源中找到符合条件的元组(记录),返回的是记录的集合,在返回记录的同时对select语句进行操作,如果有groupby语句,则按groupby语句中的 条件表达式对聚合函数进行分组操作。 所以其执行过程可理解如下:While(where条件表达式满足)
    {
    语句1:从from指定的数据源中返回记录;
    语句2:对语句1中返回的记录进行select操作;语句3:if(存在groupby条件表达式p
    {
    语句1:按groupby条件表达式执行聚合函数;
    }
    }1、对上文中生成#temp2,#temp3的过程其时间复杂度为0(n)。
    2、形成主SQL语句的过程,在动态生成季度列的过程中,其时间复杂度为0(n)。
    3、执行主SQL语句,其时间复杂度为0(n)。
      

  2.   

    SET STATISTICS IO on
    SET STATISTICS TIME on
    到查询分析器里把这两个语句分别放在2个查询语句的前面测试一下就知道了