5

ですから、この質問に対する決定的な答えがあるかどうか疑問に思います。
また、インデックスがクラスター化されているか非クラスター化されているかは重要ですか。それはすべてのRDBMS実装で同じですか、それとも正確な動作はプロプライエタリになりますか?

4

5 に答える 5

6

SQLは宣言型言語であり、手続き型言語ではありません。各SQL実装には、使用するインデックス、オプティマイザーが使用するインデックスを決定する方法、SQLプログラマーが選択に影響を与えるためにできることなど、実装の詳細に関する独自の癖があります。

于 2008-11-11T05:22:51.363 に答える
1

インデックスの使用はSQL標準の一部ではなく、特定のDBMSの実装の詳細です。

理想的には、返される実際の行に影響を与えないため、影響を与えないようにする必要があります。

しかし、SQLクエリの順序に基づいてインデックスの使用を変更する名前のないDBMSでのクエリを見てきました。

于 2008-11-11T05:24:44.950 に答える
1

where句の順序は、クエリプランや、信頼できるデータベースで使用されるインデックスに影響を与えるべきではありませんが、そうではない(信頼できない)データベースを少なくとも1つ見ました。

于 2008-11-11T05:26:55.350 に答える
1

かつて (つまり、1995 年頃まで) Oracle には「ルール ベースのオプティマイザー」しかありませんでした。句 (当時は JOIN 構文はありませんでした) が、クエリ プランに影響を与えました。ただし、コストベースのオプティマイザ (Oracle はそれ以来使用しています) は、考えられるすべての計画 (または少なくとも、いくつかの適切なパラメータ内で可能な限り多く) を調べて、最も効率的なものを選択しようとします。

于 2008-11-11T10:35:15.370 に答える
0

DBMSエンジニアを含め、誰も本当に知っているとは思わないので、これは答えるのが難しいです! 笑、それは皮肉ですが、私が本当に言いたいのは、それは本質的に非決定論的だということです。私が間違っている可能性がありますが、実際には DB エンジンの実装に帰着します。なぜなら、ANSI SQL 標準やその他の標準は、私の知る限り、このインデックス セマンティクスの概念を規制していないからです。ただし、インデックス付きフィールドへの FIRST 参照が重要であることはわかっています。これは、クエリ エンジンの決定ツリーの最上位をマークするためです。そこから、インデックスの数とタイプに応じて、クエリ エンジンは最初に見つかった最も一致するインデックスを使用するか、「最適化」して代わりに別のインデックスを使用するかを決定できます。それが非決定論的な部分だと思います。

于 2010-05-22T00:31:52.003 に答える