0

一位同事向我提到,SQL Server 不像 MySQL/PHP 那样适用于 Big O。

任何需要 CPU 时间的东西都有一个大 O...

我会不会误会了什么?我的意思是,如果运行查询,总有一个大 O?SQL Server 怎么可能是例外或不同?

4

2 回答 2

0

大 O 表示法只是一种根据算法操作的数据大小确定算法运行时间的方法。例如,快速排序的平均运行时间为 O(n log n)。但是,它可能有 O(n^2) 的最坏情况,并且存在(就地)以 O(log n) 运行的优化版本。数据库服务器需要执行的每个操作和查询(即算法)都会相应地有一个运行时间,可以用大 O 表示法表示。

例如,对于数据库,SELECT 查询通常是 O(n),并且可以是 O(log n),并且存在索引。这是 MySQL、Oracle 还是 MS SQL 都没有关系。

我相信 MS SQL 在 SQL Server Management Studio 中有一个名为 Estimated Execution Plan 的工具,它可以帮助您找到执行时间。

简而言之,您的故事似乎缺少细节,或者有人理解错误。

于 2013-04-30T15:41:03.313 回答
0

你应该和你的同事谈谈他们的意思。

“Big O”是指算法相对于输入大小的时间复杂度。(有关该主题的讨论,请参见此处。)“大 O”估计本身就是时间复杂度的上限。

时间复杂度是算法的一个特征。运行 SQL 查询的代码实现了该查询的算法。因此,查询将有一些与之相关的时间复杂度度量。这将适用于所有数据库。

于 2013-04-30T15:41:09.453 回答