0

仲間の同僚は、SQL Server は MySQL/PHP のように Big O には適用されないと言いました。

CPU 時間がかかるものには、大きな問題があります...

私は何かを誤解している可能性がありますか?クエリが実行される場合、常に Big O が存在するということですか? どのように SQL Server を除外したり、異なるものにすることができますか?

4

2 に答える 2

0

Big O 表記法は、アルゴリズムが処理するデータのサイズに応じて、アルゴリズムの実行時間を決定する方法にすぎません。たとえば、クイックソートの平均実行時間は O(n log n) です。ただし、最悪の場合は O(n^2) になる可能性があり、O(log n) で実行される最適化されたバージョンが (適切に) 存在します。データベース サーバーが実行する必要があるすべての操作とクエリ (つまり、アルゴリズム) には、Big O 表記で表現できる実行時間が必要です。

たとえば、データベースの場合、SELECT クエリは一般に O(n) であり、インデックスが存在する場合は O(log n) になる場合があります。これが MySQL であるか、Oracle であるか、MS SQL であるかは問題ではありません。

MS SQL には、実行時間を見つけるのに役立つ SQL Server Management Studio の推定実行計画というツールがあると思います。

要するに、あなたの話の詳細が欠けているか、誰かが何か間違ったことを理解したようです.

于 2013-04-30T15:41:03.313 に答える
0

同僚が何を意味しているのかについて、同僚と話し合う必要があります。

「Big O」は、入力のサイズに関するアルゴリズムの時間の複雑さを指します。(このトピックの説明については、こちらを参照してください。) "Big O" 推定自体が、時間計算量の上限です。

時間の複雑さは、アルゴリズムの特性です。SQL クエリを実行するコードは、そのクエリのアルゴリズムを実装します。したがって、クエリには、それに関連付けられた時間の複雑さの測定値が含まれます。これは、すべてのデータベースに適用されます。

于 2013-04-30T15:41:09.453 に答える