newid()関数はバックグラウンドでどのように動作しますか?New_Id()とRand()の違いSQLSERVER2005
rand()とnewid()の違いは何ですか?
どちらが効率的ですか?
ありがとうございます。
newid()関数はバックグラウンドでどのように動作しますか?New_Id()とRand()の違いSQLSERVER2005
rand()とnewid()の違いは何ですか?
どちらが効率的ですか?
ありがとうございます。
randの問題は、呼び出しのすべての行に対して同じ値を返すことです。 newidはすべての行で異なるでしょう。この記事では))NEWID(でソートSQL Serverの推定計画によると、明らか
https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6089823.html#
NEWID()は、ユニーク識別子カラムタイプに格納されているGUIDを生成します。 RAND()は単に疑似乱数(int、smallint、またはtinyint)です。あなたのニーズが何であるかについては、それは効率性とより多くのことについて実際には少なくなります。 RAND()は一意であるとは保証されませんが、NEWID()は一意です。
newid()は実際には乱数を生成しませんが、ランダムな部分を持つGUIDを生成し、乱数の順序付けに役立ちます。
より効率的な点では、注文が要因である場合、その実際にはより大きな疑問がよりランダムになります。デフォルトでは、クエリに関するいくつかのトリッキーなことなしに、rand()はクエリの実行開始時に1つの乱数を生成し、それを各行に使用します。各行に異なる乱数を生成することはありません。単純なクエリでは、単純な "ORDER BY rand()"を実行しても、ランダムに結果を並べることはありません。
この場合、newid()は効率的でなくても、はるかに優れています。
物事を説明するランドよりも時間がかかる(です。私はrand()番号の生成は時間要素に基づいていると思います。Rand()でクエリのレコードをソートする場合、レコードは同じrand番号になり、結果は前と同じになります。
Select *,rand() as rnd from dbo.Products Order by rnd
ランダム生成係数はレコード選択中に変更されないため、すべてのレコードは同じrnd値になります。
newid()がMS Server上でhttp://en.wikipedia.org/wiki/Globally_Unique_Identifierをどのように動作させるかを説明するウィキメディアです。 – u07ch